我需要在REST API中使用URI来检索当前登录的用户.通常我GET在具有ID的资源上使用,但客户端不知道用户的ID.
我找到了以下解决方案:
按用户名
此解决方案使用用户名而不是用户的ID.
例:
GET /user/{userSlug}拥有自己的资源
此解决方案为用户提供了一个资源,为登录用户提供了一个额外资源.
例子:
JIRA REST API:GET /myself
GitHub REST API:GET /user
Stack Exchange REST API:GET /me
带有符号链接
该解决方案具有用户ID的符号链接.
例:
GET /user/current带过滤器
此解决方案使用筛选器作为用户名.
例:
GET /user?username={username}哪一个最RESTful?优缺点都有什么?
我已经看到了为经过身份验证的用户支持魔术ID的URI,如下所示:
GET /user/me - list my profile
GET /user/me/photos - list my photos
Run Code Online (Sandbox Code Playgroud)
下面的那些使用实际的用户ID
GET /user/742924
GET /user/742924/photos
Run Code Online (Sandbox Code Playgroud)
我看到的问题是,相同的资源ID指向不同的资源,具体取决于经过身份验证的用户.
这违反任何REST原则吗?