1

我有一个标签系统:

标签

  • ID
  • 姓名
  • 儿童标签

所以它们可以嵌套(最大深度 3)

例如:

  • 食物
    • 餐厅
    • 快餐
    • 中国菜
  • 药物
    • 医院
    • 药店
  • 娱乐
    • 极端
      • 滑雪
      • 溜冰
    • 家庭

我有一些带有标签的资源。

地方

  • ID
  • 姓名
  • 标签

而且我有几个端点:

/api/tags

{
  "items": [
    {
      "_links": {
        "self": {
          "href": "/api/tags/1"
        }
      },
      "id": 1,
      "name": "Food",
      "_embedded": {
        "children": [
          {
            "_links": {
              "self": {
                "href": "/api/tags/4"
              }
            },
            "id": 4,
            "name": "Restaurant",
            "_embedded": {
              "children": []
            }
          },
          {
            "_links": {
              "self": {
                "href": "/api/tags/5"
              }
            },
            "id": 5,
            "name": "Fast food",
            "_embedded": {
              "children": []
            }
          }
        ]
      }
    },
    {
      "_links": {
        "self": {
          "href": "/api/tags/2"
        }
      },
      "id": 2,
      "name": "Medicine",
      "_embedded": {
        "children": []
      }
    },
    {
      "_links": {
        "self": {
          "href": "/api/tags/3"
        }
      },
      "id": 3,
      "name": "Entertainment",
      "_embedded": {
        "children": []
      }
    }
  ]
}

/api/place/1

{
  "id": 1,
  "name": "FooBar Arena",
  "_embedded": {
    "tags": [
      {
        "_links": {
          "self": {
            "href": "/api/tags/1"
          }
        },
        "id": 1,
        "name": "Food"
      },
      {
        "_links": {
          "self": {
            "href": "/api/tags/2"
          }
        },
        "id": 2,
        "name": "Medicine"
      }
    ]
  }
}

因此,当标签本身被列为嵌入式资源时,我不希望标签具有嵌入式资源,但是由于不包括嵌入式子项,我最终得到了具有相同 SELF 链接的相同数据的两种不同表示形式,客户应该如何比较它们?比较 SELF 链接会起作用,但缺少一种表示children

4

1 回答 1

1

我相信一个好的 HAL 客户不会认为_embedded代表的一部分。一个好的 HAL 客户端只需使用 from 的值_embedded来预热缓存。中出现的项目_embedded仍应出现在_links.

因此,只要标签出现在_links每个资源中,就不需要多次嵌入相同的资源。

于 2017-11-27T22:04:13.487 回答