当前位置:  开发笔记 > 编程语言 > 正文

如何设计URL以从REST API中返回当前用户的数据?

如何解决《如何设计URL以从RESTAPI中返回当前用户的数据?》经验,为你挑选了1个好方法。

我有一个基于REST的服务,用户可以返回自己的书籍列表(这是一个私人列表).

该URL目前是 ../api/users/{userId}/books

每次调用时,他们还将提供先前提供的身份验证令牌.

我的问题是:

    提供userIdURL冗余?当我们通过每个呼叫获得令牌时,我们可以找出正在执行呼叫的用户并返回他们的书籍列表.这userId不是严格要求的.

    删除userId破解REST原则/users/books/看起来应该返回所有用户的所有书籍?

    我是否应该咬住子弹并根据令牌对它们进行身份验证,然后检查令牌是否属于同一个userId

cassiomolin.. 9

简短的回答

您可以me在URL中使用以引用当前用户.通过这种方法,你将有一个网址为:/users/me/books.

每个问题的答案

提供userIdURL冗余?当我们通过每个呼叫获得令牌时,我们可以找出正在执行呼叫的用户并返回他们的书籍列表.这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

当使用userIdURL来请求来自用户的私人信息时,检查令牌是否属于userIdURL中包含的用户是没有害处的.



1> cassiomolin..:

简短的回答

您可以me在URL中使用以引用当前用户.通过这种方法,你将有一个网址为:/users/me/books.

每个问题的答案

提供userIdURL冗余?当我们通过每个呼叫获得令牌时,我们可以找出正在执行呼叫的用户并返回他们的书籍列表.这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

当使用userIdURL来请求来自用户的私人信息时,检查令牌是否属于userIdURL中包含的用户是没有害处的.

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有