REST API:嵌套URI可以与ID共存吗?

Ita*_*man 2 rest http

假设我有一系列"订单".

(a)订单分为三类:"待定","已确认","已完成".

(b)当然,可以通过ID查询订单

最初我想到了这个URI方案:

为一个):

  • GET /orders/:id

对于(b):

  • GET /orders/pending
  • GET /orders/confirmed
  • GET /orders/completed

这种方法的问题在于,(非常非常罕见)订单将接收ID"待定"(或"已确认"或"已完成"),在这种情况下,URI /orders/pending变得不明确.

另一种选择是使用:GET /orders_pending但这似乎不那么优雅.

有什么建议?

Tim*_*Tim 6

立即想到的解决方案是使用

GET /orders?category=pending HTTP/1.1
Run Code Online (Sandbox Code Playgroud)

这适用于查询,应该很容易在任何服务器上实现.

资源的属性不应该用作url段,因为理想情况下,每个url段代表一个资源(或多个),而不是属性.我想你已经知道了,因为你自己说过

这种方法的问题在于(非常非常罕见)订单将收到ID"待定"(或"已确认"或"已完成")的可能性,在这种情况下,URI/orders/pending变得不明确.

如果要根据属性的值过滤结果,可以使用url中的查询.

另外,正如@mahemoff指出的那样

可以在此基础上构建,例如?category = pending&paid = true,并且您无法真正扩展/订购/挂起的URL样式以涵盖所有可能的查询输入.

  • 这是一个很好的答案,因为要求是简单的`/ orders`搜索/过滤,是所有订单的列表.可以在此基础上构建,例如?category = pending&paid = true,并且您无法真正扩展/订阅/挂起的URL样式以涵盖所有可能的查询输入. (2认同)