REST API子资源,数据返回?

斯蒂芬·拉斯特(Stephen Last)

如果我们有customersand orders,那么我正在寻找正确的RESTful方法来获取此数据:

{
  "customer": {
    "id": 123,
    "name": "Jim Bloggs"
    "orders": [
      {
        "id": 123,
        "item": "Union Jack Keyring",
        "qty": 1
      }, {
        "id": 987,
        "item": "London Eye Ticket",
        "qty": 5
      }
    ]
  }
}
  1. GET /customers/123/orders
  2. GET /customers/123?inc-orders=1

我是否正确,URL的最后部分/文件夹(不包括查询字符串参数)应该是返回的资源。

如果是这样,则数字1应该仅返回订单数据,而不包括客户数据。当2号直接指向客户123并使用查询字符串参数来实现/过滤返回的客户数据(在这种情况下,包括订单数据)。

这两个调用中的哪一个是上述JSON ..的正确RESTful调用?...或者是否有3号秘密选项。

Arjabbar

您有3个选项,我认为可以认为是RESTful的。

1)GET /customers/12但始终包括订单。您是否存在客户不希望使用订单的情况?还是订单数组真的可以变大?如果是这样,您可能需要其他选择。

2)GET /customers/123,其中可能包含指向其订单的链接,如下所示:

{
  "customer": {
    "id": 123,
    "name": "Jim Bloggs"
    "orders": {
       "href": "<link to you orders go here>"
    }
  }
}

有了这个,您的客户将不得不发出2个请求来获得客户及其订单。这种方式的好处是,您可以轻松实现订单的整洁分页和过滤。

3)GET /customers/123?fields=orders这类似于您的第二种方法。这将允许客户端更有效地使用您的API,但是除非您确实需要限制从服务器返回的字段,否则我不会走这条路。否则,它将为您的API增加不必要的复杂性,您必须对其进行维护。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

REST资源相关数据

来自分类Dev

子资源可以在REST中更改其“父”资源吗?

来自分类Dev

REST-处理子资源访问

来自分类Dev

Azure Rest API PUT块Blob返回“指定的资源不存在”。CORS

来自分类Dev

REST资源根据状态返回不同的对象

来自分类Dev

如果父资源不存在,则在REST API中为子资源使用哪个HTTP代码?

来自分类Dev

REST GET API-找不到资源时返回什么

来自分类Dev

REST子/子资源单个实体

来自分类Dev

REST子资源定位器

来自分类Dev

Spring Data Rest:用户的返回资源

来自分类Dev

REST到子资源的映射

来自分类Dev

在REST中将子资源移到另一父资源

来自分类Dev

从ColdFusion中的REST API返回JSOn数据

来自分类Dev

Yii2 REST API关系数据返回

来自分类Dev

从rest api返回的正确数据结构是什么?

来自分类Dev

从REST Api获取数据

来自分类Dev

计数聚合与从Rest API返回的数据不匹配

来自分类Dev

从Javascript文件调用Rest API:数据返回问题

来自分类Dev

Yii2 REST API关系数据返回

来自分类Dev

Rest Api创建资源设计

来自分类Dev

REST API子资源,数据返回?

来自分类Dev

Laravel REST API调用返回状态为200的伪数据

来自分类Dev

Debian 10(32 位)不从 REST API 返回 json 数据

来自分类Dev

从rest api返回数据

来自分类Dev

用于更新子资源的正确 REST API url 是什么?

来自分类Dev

REST API 的用户资源

来自分类Dev

如果在发布子资源时资源不存在,在 REST API 中使用哪个 HTTP 状态代码?

来自分类Dev

如何指示 REST API 包含给定资源的附加数据

来自分类Dev

指定从 REST 查询返回的数据