如何使用Spring HATEOAS在Links部分中生成链接集合

时间:2015-03-17 19:51:29

标签: java json spring-hateoas

我正在尝试生成类似于以下示例的JSON输出:

{
    "links": {
        "self": { "href": "http://api.com/items" },
        "item": [
            { "href": "http://api.com/items/1" },
            { "href": "http://api.com/items/2" }
        ]
    "data": [
            {"itemName":"a"}, 
            {"itemName":"b"} 
     ] 
}

请注意item是链接对象的集合。我将如何使用Spring HATEOAS做到这一点?

更新: 多次向我的UserResource添加相同的rel给出了以下内容:

"links": [
    {
        "rel": "self",
        "href": "http://localhost:8080/sophia/users/admin"
    },
    {
        "rel": "item",
        "href": "http://localhost:8080/sophia/companies/01393048000170/item/1"
    },
    {
        "rel": "item",
        "href": "http://localhost:8080/sophia/companies/01393048000170/item/2"
    },
    {
        "rel": "item",
        "href": "http://localhost:8080/sophia/companies/01393048000170/item/3"
    }
]

2 个答案:

答案 0 :(得分:2)

只需使用相同的rel添加多个链接。

Resource resource = new Resource(data);
resource.add(new Link("…", "item"));
resource.add(new Link("…", "item"));

答案 1 :(得分:0)

尽管你说的是“链接”而不是“_links”,但你希望得到的资源有点像HAL + JSON seriazliation格式。你得到的是Spring-HATEOAS的默认值。您需要使用@EnableHypermedia(HAL)。你也应该在Accept标头中有application / hal + json,可能还有你的@RequestMapping属性的产生参数。