休息。比较两个 JSON 表示
REST. Comparing two JSON representations
我有一个标签系统:
标签
- 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 的相同数据的两种不同表示 link,客户应该如何比较那些?比较 SELF links 会起作用,但缺少一种表示形式 children
我相信一个好的 HAL 客户端 不会 将 _embedded
视为表示的一部分。一个好的 HAL 客户端只需使用 _embedded
中的值来预热缓存。 _embedded
中出现的项目仍应出现在 _links
中。
因此,只要标签出现在每个资源的 _links
中,就不需要多次嵌入相同的资源。
我有一个标签系统:
标签
- 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 的相同数据的两种不同表示 link,客户应该如何比较那些?比较 SELF links 会起作用,但缺少一种表示形式 children
我相信一个好的 HAL 客户端 不会 将 _embedded
视为表示的一部分。一个好的 HAL 客户端只需使用 _embedded
中的值来预热缓存。 _embedded
中出现的项目仍应出现在 _links
中。
因此,只要标签出现在每个资源的 _links
中,就不需要多次嵌入相同的资源。