当前用户与ID的REST端点

当前用户与ID的REST端点,rest,api,http,restful-architecture,Rest,Api,Http,Restful Architecture,就RESTAPI而言,通常遵循哪种结构更好 假设所有资源的GET/PUT/POST/DELETE 1) 将当前登录用户用于/users/***路由 /users /users/password /users/email /users/preferences /users/documents /documents/:id 2) 具有id的绝对路径,并为当前登录的用户使用/users/:id /users /users/:id/password /users/:id/email /users/:i

就RESTAPI而言,通常遵循哪种结构更好

假设所有资源的
GET
/
PUT
/
POST
/
DELETE

1) 将当前登录用户用于/users/***路由

/users
/users/password
/users/email
/users/preferences
/users/documents
/documents/:id
2) 具有id的绝对路径,并为当前登录的用户使用
/users/:id

/users
/users/:id/password
/users/:id/email
/users/:id/preferences
/preferences/:id

这有关系吗?

两者都很好。为每个用户创建唯一端点的好处在于,有一天您可以允许用户X访问关于用户Y的信息

我在最近的API中遵循的模式是为每个用户创建一个唯一的端点,但有一个端点
/current user
重定向到
/user/:some id


url可能表示一个标识。其他资源可能将用户称为sommeting的“创建者”或“修改者”,在这些地方,您可能需要使用url(而不仅仅是用户ID)。

如果您引用的资源可以是多个,您应该使用

/resource/resource_id
在上述情况下,用户只能是当前用户,因此使用类似于
/users/user_id
的模式听起来很奇怪。因为,您将必须处理不同的情况,例如,如果登录的用户a触发具有不同用户id的api调用用户B

您可以使用类似于
/profile
的命名空间来管理电子邮件、名称、图像等。您不必将其设置为
/users/profile
,因为这意味着将为当前登录的用户操作/访问数据