首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为REST应用程序中当前登录的用户设计URI

为REST应用程序中当前登录的用户设计URI
EN

Stack Overflow用户
提问于 2016-04-09 17:38:02
回答 2查看 36.6K关注 0票数 107

我需要REST中的URI来检索当前登录的用户。通常,我在带有ID的资源上使用GET,但是客户端不知道用户的ID。

我找到了以下解决方案:

  • 按用户名 此解决方案使用用户名而不是用户的ID。 示例:
代码语言:javascript
复制
- [Bitbucket REST API](https://developer.atlassian.com/static/rest/bitbucket-server/4.5.1/bitbucket-rest.html#idp2837072): `GET /user/{userSlug}`
  • 拥有自己的资源 此解决方案有一个用于用户的资源,一个用于登录用户的额外资源。 示例:
代码语言:javascript
复制
- [JIRA REST API](https://docs.atlassian.com/jira/REST/latest/#api/2/myself-getUser): `GET /myself`
代码语言:javascript
复制
- [GitHub REST API](https://developer.github.com/v3/users/#get-the-authenticated-user): `GET /user`
代码语言:javascript
复制
- [Stack Exchange REST API](https://api.stackexchange.com/docs/me): `GET /me`
  • 有符号链接 此解决方案具有用户ID的符号链接。 示例:
代码语言:javascript
复制
- [Confluence REST API](https://docs.atlassian.com/confluence/REST/5.4.4/#d2e90): `GET /user/current`
  • 带滤波器 此解决方案对用户名使用筛选器。 示例:
代码语言:javascript
复制
- [JIRA REST API](https://docs.atlassian.com/jira/REST/latest/#api/2/user-getUser): `GET /user?username={username}`

哪一个是最RESTful的?优点和缺点是什么?

EN

回答 2

Stack Overflow用户

发布于 2020-01-21 06:14:10

我认为REST应该唯一地标识资源,无论它‘使用userId/email/ssn or username,无论哪个属性唯一地标识系统中的用户。

因此,资源可以是users (复数/users),为了使它成为单数,我们有下面的选项,

如果客户端有userId,那么资源应该类似于,

代码语言:javascript
复制
GET - /users/{user-id}

如果客户端没有userId,而是有username,那么

代码语言:javascript
复制
GET - /users/{username}

因此,只要uri唯一地标识用户,我们就可以使用上述uri模式作为REST资源。

如果客户端没有userIdusernameemail或系统中唯一标识用户的任何其他属性,那么我们可以使用资源uri,

代码语言:javascript
复制
GET- /users/current

代码语言:javascript
复制
GET- /users/me

但是,在这种情况下,客户端需要启用特定于用户的令牌或会话,以便服务器可以从活动会话或在标头中传递的令牌中找到用户。注意,我们应该考虑这是最后一个选择。

票数 4
EN

Stack Overflow用户

发布于 2016-04-09 18:58:14

所有这些都是同样的RESTful。REST不是关于URI的,而是关于使用RESTfully的。

REST是关于客户端导航应用程序状态的。此状态的一部分可能是当前用户。所有URL都可以用于获取应用程序状态的这一部分。

票数 -9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36520372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档