如何使用 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 参数。
我正在尝试生成类似于以下示例的 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 参数。