假设我有一系列书籍,我们称之为图书馆. 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.