【问题标题】:Should I remove `included` models that are already in `data` in a JSON API response?我应该在 JSON API 响应中删除“数据”中已经存在的“包含”模型吗?
【发布时间】:2017-09-12 13:25:29
【问题描述】:

假设我有一个名为topics 的模型,它是自引用的(一个主题属于一个主题通过它的parent_topic_id)。

所以,我有一个名为 sports 的主题和一个名为 basketball 的子主题。

JSON API 响应当前被序列化为:

{ “数据”: [ { “类型”:“主题”, “id”:“运动”, “属性”: { “名称”:“运动”, “显示角色标题”:空, “创建时间”:“2017-04-16T21:19:25.000Z”, “更新时间”:空 }, “链接”:{ “自我”:“/主题/运动” } }, { “类型”:“主题”, "id": "运动-篮球", “属性”: { “名称”:“篮球”, “显示角色标题”:空, “创建时间”:“2017-04-16T21:19:25.000Z”, “更新时间”:空 }, “关系”:{ “父主题”:{ “数据”: { “类型”:“主题”, “id”:“运动” } } }, “链接”:{ "self": "/topics/sports-basketball" } } ], “包括”: [ { “类型”:“主题”, “id”:“运动”, “属性”: { “名称”:“运动”, “显示角色标题”:空, “父主题 ID”:空, “创建时间”:“2017-04-16T21:19:25.000Z”, “更新时间”:空 }, “链接”:{ “自我”:“/主题/运动” } } ] }

现在,考虑到sports 已经在data 中,但basketball 相关,是否也可以将其作为included 记录附加?

【问题讨论】:

    标签: json serialization json-api


    【解决方案1】:

    在这种情况下,您应该拥有两个资源 /topics/parentTopic,并且如果您的请求具有这种必要性,那么在主对象和包含对象中拥有相同的数据副本是有效的。在您的情况下,请求将是 /topics?include=parentTopic

    根据JSON API spec,包含不是强制性的。我的建议是/topics 很好,您可以从/topics 关系中引用父主题数据(取决于客户端框架),如果您查询特定的资源记录,您可以添加包含/topics/sports-basketball?include=parentTopic

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-31
      • 2016-02-04
      • 2016-04-14
      • 1970-01-01
      • 2011-12-19
      • 1970-01-01
      相关资源
      最近更新 更多