我正在向jsonapi节点端点发送请求,并使用以下参数将这些节点的“关系”对象包含为用户(post author data)和用户图片(avatar):
include=uid,uid.user_picture
这将返回节点的json数据以及聚集在一起(不管类型如何)到“包含”数组中的所有关系对象。默认情况下,所包含的数组看起来如下:
"included": [
{
"type": "user--user",
"id": "4c717273-f903-4ffa-abe2-b5e5709ad727",
"attributes": {
"display_name": "cherylm1234",
...etc...
}
},
{
"type": "file--file",
"id": "4c717273-f903-4ffa-abe2-b5e5709ad727",
"attributes": {
"filename": "Cheryl-Fun.jpg",
...etc...
}
}
]上下文:我们正试图将jsonapi与作为客户/消费者的iOS应用程序集成。
My Problem:很难在iOS客户机中为这些关系编写数据模型(不对每个响应进行循环和排序),因为它们都集中在“包含”数组的同一级别。还有一个问题是,每个“类型”都有自己的属性/字段集,因此需要基于“类型”构建iOS中的数据模型。
问题:是否可以更改此结构,以便将所有包含的对象按类型排序?
我希望“包含”数组按“类型”进行索引,其中该类型的所有对象都在该索引中。也许是这样:
included['user--user'] = [
{user-object},
{user-object},
...etc.
],
included['file--file'] = [
{file-object},
{file-object},
....etc.
],我假设这需要一个带有某种钩子的自定义模块,在返回到iOS应用程序之前,我可以在那里循环和排序数据。但是,还没有找到任何关于这类json响应修改的文档。
任何帮助都将不胜感激。
发布于 2021-01-22 10:40:56
Drupal实现了JSON:API规范。该规范指定如何对资源进行编码。如果它作为主数据返回或作为关系资源包含,则两者都是。
如果希望以另一种格式返回数据,则需要按照另一种规范在Drupal中实现您自己的REST。
但是,如果这只是关于管理客户端中的数据,我建议使用JSON:API规范的现有库之一。在jsonapi.org/implementations/上提供了一个实现列表。页面上列出的JSONAPI Swift软件包似乎得到了很好的维护。
https://stackoverflow.com/questions/65836362
复制相似问题