(Django REST)API设计:1个具有多个查询参数的路径,还是多个路径?

时间:2019-06-15 19:23:14

标签: rest django-rest-framework

假设我们有一个books端点,可以在该端点返回序列化的Book对象。 大多数,这些是已经出版的图书(因此省略了future),并且大多数,我们将显示图书列表属于一些用户。 (因此,大部分出现了user参数,而且我们大部分都过滤了属于某个用户的图书)

查询示例:

http://localhost:8000/api/books?future=true
http://localhost:8000/api/books?user=somebody
http://localhost:8000/api/books?future=true&user=somebody

我想知道上面的结构是否正常。我想到了其他一些想法,有些似乎比其他想法差。例如,另一个可选的端点/路径(而不是前一个):

// this makes the least sense to me
http://localhost:8000/api/books/somebody?future=true

我还考虑过从users端点获取那些书是否有意义:

http://localhost:8000/api/users/somebody/books
http://localhost:8000/api/users/somebody/books?future=true

然后我也可以致电:

http://localhost:8000/api/users/somebody/settings

您是否同意第二种选择没有意义?

第一个例子和第三个例子可以彼此并存吗?

我想我真正要问的是:在REST设计中是否应该可以通过两种不同的方式获得相同的确切资源?您如何优先选择另一个?您何时只执行一项?您什么时候都允许(如果有的话)?

在这种情况下,API端点将由我自己开发的将来的iOS应用程序使用,但是我认为这与问题无关。

0 个答案:

没有答案