我正在设计一个REST api,如果有人能在以下场景中提供最佳实践,我很感兴趣。
我有..。
我需要提供的能力,以获得客户的最新订单。此场景中的最佳实践是什么?只是简单地获取全部并按日期排序,还是提供特定的方法?
发布于 2017-11-27 19:51:37
我需要提供的能力,以获得客户的最新订单。
当然,您可以提供查询参数来对orders集合进行过滤、排序和切片,但是为什么不让它变得更简单,并在客户需要时提供最新的订单呢?
您可以使用如下代码(返回单个订单的表示):
GET /customers/{customerId}/orders/latest
上面的URL将映射一个随时间变化的顺序,这是非常好的。
假设还存在需要最后5个订单的情况。你的路线是什么样子的?
上面的方法侧重于能够让客户获得最新订单要求。如果返回最后5个订单需求最终会在一段时间后出现,我可能会引入另一个映射,例如/recent
它返回具有最近订单的集合的表示形式,并接受指示要返回的订单量的查询参数(5
如果省略该参数,则为默认值)。
/latest
映射仍然有效,并且只返回最新订单的表示。
提供查询参数来对orders集合进行筛选、排序和切片仍然是一种有效的方法。
关键是:如果您知道将使用API的客户端,请根据他们的需求进行定位。否则,使其更通用。在修改API时,要小心破坏更改,并且也欢迎对API进行版本控制。
发布于 2017-11-27 19:37:43
我认为没有必要走另一条路线。
传递类似于&order=-created_at&limit=1
在get请求中
或者&order=created_at&orderby=DESC&limit=1
(请注意,我不确定如何命名您的参数,因此您可以使用&count=1
而不是&limit=1
,同上顺序参数)
我认为这还取决于您是否在该路由上使用分页,因此可能需要额外的参数
Customers/{customerId}/Orders?order=-created_at&limit=1
发布于 2021-02-25 15:26:43
类似用例的Github API使用latest来获取最新的单个资源。
https://docs.github.com/en/rest/reference/repos#get-the-latest-release
因此,要获取最新的资源,您可以使用。
GET /customers/{customerId}/orders/latest
然而,我想知道社区对此的看法。
IMO资源/最新给人的印象是响应将是按最新到最旧排序的资源列表。
https://stackoverflow.com/questions/47509912
复制相似问题