我有一个基于REST的服务,用户可以返回自己的书籍列表(这是一个私人列表).
该URL目前是 ../api/users/{userId}/books
每次调用时,他们还将提供先前提供的身份验证令牌.
我的问题是:
提供userId
URL冗余?当我们通过每个呼叫获得令牌时,我们可以找出正在执行呼叫的用户并返回他们的书籍列表.这userId
不是严格要求的.
删除userId
破解REST原则/users/books/
看起来应该返回所有用户的所有书籍?
我是否应该咬住子弹并根据令牌对它们进行身份验证,然后检查令牌是否属于同一个userId
?
cassiomolin.. 9
您可以me
在URL中使用以引用当前用户.通过这种方法,你将有一个网址为:/users/me/books
.
提供
userId
URL冗余?当我们通过每个呼叫获得令牌时,我们可以找出正在执行呼叫的用户并返回他们的书籍列表.这userId
不是严格要求的.
你可以考虑这样做:/users/me/books
.其中me
指当前用户.它更容易理解/users/books
,可以用来返回用户的所有书籍.
为了一些灵活性,/users/me/books
你可以支持/users/{userId}/books
.
URL /users/me
可用于从当前用户返回数据.许多API,例如StackExchange,Facebook,Spotify和Google+都采用这种方法.
删除
userId
破解REST原则/users/books/
看起来应该返回所有用户的所有书籍?
我认为它不会破坏任何REST原则,但我认为您的资源不会被正确地限制.正如我上面回答的那样,我会使用/users/me/books
并支持/users/{userId}/books
.
我是否应该咬住子弹并根据令牌对它们进行身份验证,然后检查令牌是否属于同一个
userId
?
当使用userId
URL来请求来自用户的私人信息时,检查令牌是否属于userId
URL中包含的用户是没有害处的.
您可以me
在URL中使用以引用当前用户.通过这种方法,你将有一个网址为:/users/me/books
.
提供
userId
URL冗余?当我们通过每个呼叫获得令牌时,我们可以找出正在执行呼叫的用户并返回他们的书籍列表.这userId
不是严格要求的.
你可以考虑这样做:/users/me/books
.其中me
指当前用户.它更容易理解/users/books
,可以用来返回用户的所有书籍.
为了一些灵活性,/users/me/books
你可以支持/users/{userId}/books
.
URL /users/me
可用于从当前用户返回数据.许多API,例如StackExchange,Facebook,Spotify和Google+都采用这种方法.
删除
userId
破解REST原则/users/books/
看起来应该返回所有用户的所有书籍?
我认为它不会破坏任何REST原则,但我认为您的资源不会被正确地限制.正如我上面回答的那样,我会使用/users/me/books
并支持/users/{userId}/books
.
我是否应该咬住子弹并根据令牌对它们进行身份验证,然后检查令牌是否属于同一个
userId
?
当使用userId
URL来请求来自用户的私人信息时,检查令牌是否属于userId
URL中包含的用户是没有害处的.