我们说我有一系列书籍,我们称之为图书馆。 GET domain.com/library应该以符合HAL标准的JSON返回库中的书籍列表。我该如何格式化JSON?我怎么能嵌入书籍资源?以下是我目前正在考虑的格式:
{
"books": [
{
"name": "Fight Club",
"_links": {
"self": {
"href": "domain.com/library/Fight-Club"
},
},
...
},
....
],
"_links" : {
"search": {
"href": "domain.com/library/search"
},
...
},
"_embedded" : {
"Fight Club": {
"author": "Chuck Palahniuk",
...
[Same links as above]
}
}
}
答案 0 :(得分:12)
在编写HAL规范时,_embedded
对象用于给定资源的子资源。所以你的骨干HAL JSON看起来就像这样。
{
"_links": {
"self": {
"href": "/library"
}
},
"_embedded": {
"item": [{
"_links": {
"self": {
"href": "/library/Fight-Club"
}
},
"author": "Chuck Palahniuk",
"title": "Fight Club"
}]
}
}
_embedded
对象的直接属性为link relations。 item
关系是标准关系,表示资源是属于上下文资源的项(在本例中是您的库)。您可以使用CURIEs创建自定义链接关系。
请注意顶级对象中缺少books
数组。如果您愿意,可以包括它,但这只是一种便利。 HAL库只会知道您在_links
和_embedded
中添加的内容。有关HAL中的集合以及决定数据放置位置的人为因素,请参阅此discussion。