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

How to produce collections of links within the Links section using 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"
    }
]

只需添加多个具有相同 rel 的链接。

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

您似乎希望以 HAL+JSON 序列化格式获取资源,尽管您说的是 "links" 而不是“_links”。您得到的是 Spring-HATEOAS 默认值。您需要使用@EnableHypermedia(HAL)。另外,您的 Accept header 中应该有 application/hal+json,并且可能您的 @RequestMapping 属性的 produces 参数。