JSONAPI调用以返回包括自我关系在内的对象集

时间:2019-04-03 19:42:22

标签: get json-api

我正在尝试发出JSONAPI GET请求以返回一组特定的Foo

url.com/foos?filter[foo.id]=13,14

这在一定程度上有效:Foo有一个称为children的关系,该关系包括所有其他Foo,其中所讨论的Foo是{{1 }},但是上面的GET请求的响应包含parent的空列表。像这样:

children

唯一填充{ "data": [ { "type": "foos", "id": "13", "attributes": { "name": "myFoo", }, "relationships": { "children": { "data": [] }, "parent": { "data": null } } }, {...} ] } 列表的情况是,URL的过滤器列表中是否还包含子children,或者我直接向GET id发送请求时。例如,

Foo

得到以下答复:

url.com/foos/13

如何获取由{ "data": [ { "type": "foos", "id": "13", "attributes": { "name": "myFoo", }, "relationships": { "children": { "data": [ { "type": "foo", "id": "18" }, { "type": "foo", "id": "19" } ] }, "parent": { "data": null } } } ] } 过滤的一组Foo并确保每个id包括其子Foo的列表?

1 个答案:

答案 0 :(得分:0)

JSON:API规范与过滤策略无关:

  

注意:JSON:API与服务器支持的策略无关。过滤器查询参数可以用作许多过滤策略的基础。   https://jsonapi.org/format/#fetching-filtering

这取决于您的实现。但是您的实现似乎有一个严重的错误。如果我理解的正确,即使资源具有相关记录,您的API也会为children关系返回一个空数组作为resource linkage。这是一个严重的错误。服务器可能根本不包含任何关系,或者它可能仅提供related resource link,但如果资源具有相关记录,则它不得在data键下提供空数组。作为资源链接数据的空数组告诉客户端没有任何相关记录:

  

资源链接必须表示为以下之一:

     
      
  • 为空,表示一对一关系。
  •   
  • 一个空数组([]),用于建立多对多关系。
  •   
  • 用于非空一对一关系的单个资源标识符对象。
  •   
  • 用于非空多对多关系的资源标识符对象数组。
  •   
     

https://jsonapi.org/format/#document-resource-object-linkage

由于该问题与JSON:API规范无关,而与您的具体实现有关,并且该问题不包含您的实现所基于的任何服务器端库,因此无法确定此错误的原因。