【问题标题】:How to retrieve resources based on different conditions using GET in RESTful api?如何在 RESTful api 中使用 GET 根据不同条件检索资源?
【发布时间】:2014-07-16 14:26:39
【问题描述】:

根据 REST 框架,我们可以使用 GET 方法访问资源,这很好,如果我知道我的资源的关键。例如,为了获取交易,如果我通过 transaction_id 那么我可以获得该交易的资源。但是当我想访问两个日期之间的所有事务时,我应该如何使用 GET 编写我的 REST 方法。

获取 transaction_id 的事务:GET/transaction/id 获取两个日期之间的交易???

另外,如果有其他条件,我需要输入最近的 10 个事务,最旧的 10 个事务,那么我应该如何编写我的 URL,这是 REST 中的主键。

我尝试在 google 上查找,但无法找到完全 RESTful 的方法并解决我的查询,所以在这里发布我的问题。我对 POST 和 DELETE 有清楚的了解,但是如果我想根据条件使用 PUT 对某些资源进行相同的更新,那么该怎么做呢?

【问题讨论】:

  • 感谢您指向正确的链接。我可以发送带有 URL 的过滤器,所以我需要在一个发送 GET 结果的服务器调用中处理所有可能的过滤器,对吧?或任何其他建议?
  • 是的,具体如何操作取决于您使用的后端框架。

标签: http rest web get


【解决方案1】:

REST中有collection和item资源。

如果你想得到一个项目的表示,你通常使用一个唯一的标识符:

  • /books/123
  • /books/isbn:32t4gf3e45e67(不是有效的 isbn)

template

  • `/books/{id}
  • /books/isbn:{isbn}

如果你想获得一个集合的表示,或者一个简化的集合,你可以使用集合的唯一标识符并向它添加一些过滤器:

  • /books/since:{fromDate}/to:{toDate}/
  • /books/?since="{fromDate}"&to="{toDate}"

过滤器可以进入路径或 url 的 queryString 部分。

在响应中,您应该添加带有这些 URL(又名 HATEOAS)的链接,REST 客户端可以遵循这些链接。您应该使用链接关系,例如 IANA link relations 来描述这些链接,并使用链接数据,例如 schema.org 或在您的表示中描述数据。还有其他词汇,例如GoodRelations 和 ofc。您也可以为您的应用程序编写自己的词汇。

【讨论】:

    猜你喜欢
    • 2013-05-07
    • 1970-01-01
    • 2016-01-10
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2019-05-23
    • 1970-01-01
    • 2021-08-16
    相关资源
    最近更新 更多