我需要REST中的URI来检索当前登录的用户。通常,我在带有ID的资源上使用GET,但是客户端不知道用户的ID。
我找到了以下解决方案:
- [Bitbucket REST API](https://developer.atlassian.com/static/rest/bitbucket-server/4.5.1/bitbucket-rest.html#idp2837072): `GET /user/{userSlug}`- [JIRA REST API](https://docs.atlassian.com/jira/REST/latest/#api/2/myself-getUser): `GET /myself`- [GitHub REST API](https://developer.github.com/v3/users/#get-the-authenticated-user): `GET /user`- [Stack Exchange REST API](https://api.stackexchange.com/docs/me): `GET /me`- [Confluence REST API](https://docs.atlassian.com/confluence/REST/5.4.4/#d2e90): `GET /user/current`- [JIRA REST API](https://docs.atlassian.com/jira/REST/latest/#api/2/user-getUser): `GET /user?username={username}`哪一个是最RESTful的?优点和缺点是什么?
发布于 2020-01-21 06:14:10
我认为REST应该唯一地标识资源,无论它‘使用userId/email/ssn or username,无论哪个属性唯一地标识系统中的用户。
因此,资源可以是users (复数/users),为了使它成为单数,我们有下面的选项,
如果客户端有userId,那么资源应该类似于,
GET - /users/{user-id}如果客户端没有userId,而是有username,那么
GET - /users/{username}因此,只要uri唯一地标识用户,我们就可以使用上述uri模式作为REST资源。
如果客户端没有userId、username或email或系统中唯一标识用户的任何其他属性,那么我们可以使用资源uri,
GET- /users/current或
GET- /users/me但是,在这种情况下,客户端需要启用特定于用户的令牌或会话,以便服务器可以从活动会话或在标头中传递的令牌中找到用户。注意,我们应该考虑这是最后一个选择。
发布于 2016-04-09 18:58:14
所有这些都是同样的RESTful。REST不是关于URI的,而是关于使用RESTfully的。
REST是关于客户端导航应用程序状态的。此状态的一部分可能是当前用户。所有URL都可以用于获取应用程序状态的这一部分。
https://stackoverflow.com/questions/36520372
复制相似问题