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

时间:2016-04-09 17:38:03

标签: rest http url

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

我找到了以下解决方案:

  • 按用户名

    此解决方案使用用户名而不是用户的ID。

    示例:

  • 使用自有资源

    此解决方案为用户提供了一个资源,为登录用户提供了一个额外资源。

    示例:

  • 带符号链接

    此解决方案具有用户ID的符号链接。

    示例:

  • 使用过滤器

    此解决方案使用过滤器作为用户名。

    示例:

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

1 个答案:

答案 0 :(得分:3)

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

因此,资源可以是users(复数/users),为了使它唯一,我们有以下选择,

如果客户拥有userId,则资源应类似于

GET - /users/{user-id}

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

GET - /users/{username}

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

如果客户端没有userIdusernameemail或任何其他可以唯一标识您系统中用户的属性,那么我们可以拥有类似以下内容的资源uri,< / p>

GET- /users/current

OR

GET- /users/me

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