假设我有一系列书籍,我们称之为图书馆. 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]
}
}
}
解决方法
在编写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.项关系是标准关系,表示资源是属于上下文资源的项(在本例中是您的库).您可以使用CURIEs创建自定义链接关系.
请注意顶级对象中缺少books数组.如果您愿意,可以包括它,但这只是一种便利. HAL库只会知道你放在_links和_embedded中的内容.有关HAL中的集合以及决定数据放置位置的人为因素,请参阅此discussion.