首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >REST API获取单个最新资源

REST API获取单个最新资源
EN

Stack Overflow用户
提问于 2017-11-27 19:27:57
回答 3查看 2K关注 0票数 2

我正在设计一个REST api,如果有人能在以下场景中提供最佳实践,我很感兴趣。

我有..。

  • 获取客户/{customerId}/Orders-获取所有客户订单
  • 获取客户/{customerId}/Orders/{orderId}-获取特定订单

我需要提供的能力,以获得客户的最新订单。此场景中的最佳实践是什么?只是简单地获取全部并按日期排序,还是提供特定的方法?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-11-27 19:51:37

我需要提供的能力,以获得客户的最新订单。

当然,您可以提供查询参数来对orders集合进行过滤、排序和切片,但是为什么不让它变得更简单,并在客户需要时提供最新的订单呢?

您可以使用如下代码(返回单个订单的表示):

代码语言:javascript
运行
复制
GET /customers/{customerId}/orders/latest

上面的URL将映射一个随时间变化的顺序,这是非常好的。

假设还存在需要最后5个订单的情况。你的路线是什么样子的?

上面的方法侧重于能够让客户获得最新订单要求。如果返回最后5个订单需求最终会在一段时间后出现,我可能会引入另一个映射,例如/recent它返回具有最近订单的集合的表示形式,并接受指示要返回的订单量的查询参数(5如果省略该参数,则为默认值)。

/latest映射仍然有效,并且只返回最新订单的表示。

提供查询参数来对orders集合进行筛选、排序和切片仍然是一种有效的方法。

关键是:如果您知道将使用API的客户端,请根据他们的需求进行定位。否则,使其更通用。在修改API时,要小心破坏更改,并且也欢迎对API进行版本控制。

票数 5
EN

Stack Overflow用户

发布于 2017-11-27 19:37:43

我认为没有必要走另一条路线。

传递类似于&order=-created_at&limit=1在get请求中

或者&order=created_at&orderby=DESC&limit=1(请注意,我不确定如何命名您的参数,因此您可以使用&count=1而不是&limit=1,同上顺序参数)

我认为这还取决于您是否在该路由上使用分页,因此可能需要额外的参数

代码语言:javascript
运行
复制
Customers/{customerId}/Orders?order=-created_at&limit=1
票数 5
EN

Stack Overflow用户

发布于 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资源/最新给人的印象是响应将是按最新到最旧排序的资源列表。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47509912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档