JSONAPI调用返回包含自我关系的对象集

问题描述 投票:0回答:1

我正在尝试发出一个JSONAPI GET请求来返回一组特定的Foos。

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

这有效 - 在某种程度上:Foo有一个名为children的关系,其中包括所有其他Foos,其中Fooparent,但上面的GET请求的响应包括children的空列表。就像是:

{
    "data": [
        {
            "type": "foos",
            "id": "13",
            "attributes": {
                "name": "myFoo",
            },
            "relationships": {
                "children": {
                    "data": []
                },
                "parent": {
                    "data": null
                }
            }
        }, 
        {...}
    ]
}

填充children列表的唯一次数是,如果孩子id也包含在url的过滤器列表中,或者我直接向GET发送请求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过滤的一组ids并确保每个Foo包含其子Foos的列表?

get json-api
1个回答
0
投票

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

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

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

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.