关于用户资源
- 单例资源
在路径/users/[user_id]
中,你可以期望发生几件事情,例如:
- 如果你没有进行身份验证,且只有经过身份验证的用户才能访问此用户资源,那么会返回未经授权的401响应。
- 如果你没有被允许访问请求的用户资源,则会返回禁止的403响应。
- 如果不存在带有[user_id]的用户资源,则会返回未找到的404响应。
- 但是,在成功的200响应中,你应该得到一个表示具有标识符[user_id]字段的用户资源的单例资源。
每个单例都由其路径和标识符唯一标识,并且你可以使用它们来查找资源。不能使用多个路径来表示相同的单例。
- 集合资源
在路径/users
上,你将始终返回一组用户资源。
你可以使用查询参数(GET
参数)查询路径/users
。这将返回一个满足请求条件的用户集合。返回的集合应包含用户资源,所有这些资源都具有其标识资源路径。搜索参数可以是集合资源中存在的任何字段;firstName
,lastName
,id
例如:
/users?id=1
/users?firstName=John
/users?lastName=Doe
或者甚至以上所有选项的组合:
/users?firstName=John&lastName=Doe
集合响应始终是一个数组。该数组可以为空(无匹配项),包含一项(确定性),或者包含多个项(不确定性)。
关于电子邮件
电子邮件可以是用户资源的资源或属性/字段。
- 作为用户属性的电子邮件:
如果该字段是用户的属性,用户响应将类似于以下内容:
{
id: 1,
firstName: 'John'
lastName: 'Doe'
email: 'john.doe@example.com'
...
}
这意味着没有专门的电子邮件终结点,但您现在可以通过发送以下请求按其电子邮件查找用户:
/users?email=john.doe@example.com
(假设电子邮件唯一对应于用户),将返回一个匹配电子邮件的用户项集合。
- 电子邮件作为资源:
但如果来自用户的电子邮件也是资源。那么您可以创建一个API,其中/users/[user_id]/emails
返回具有id user_id
的用户的电子邮件地址集合。 /users/[user_id]/emails/[email_id]
返回用户ID和['email_id']的电子邮件。您用作标识符的是什么取决于您,但我会坚持使用整数。您可以通过向标识要删除的电子邮件的路径发送DELETE
请求来从用户中删除电子邮件。例如,在/users/[user_id]/emails/[email_id]
上进行DELETE
将删除由用户ID拥有的带有email_id的电子邮件。最有可能只允许拥有资源的用户执行此删除操作。其他用户将获得403响应。
如果用户只能有一个电子邮件地址,则可以坚持使用/users/[user_id]/email
。 这将返回一个单例资源。用户可以通过在该URL上PUT
电子邮件地址来更新其电子邮件地址。