我正在尝试发出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
的列表?
答案 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规范无关,而与您的具体实现有关,并且该问题不包含您的实现所基于的任何服务器端库,因此无法确定此错误的原因。