gpt4 book ai didi

spring - 如何删除 Spring HATEOAS 中的 "_embedded"属性

转载 作者:IT老高 更新时间:2023-10-28 13:52:08 28 4
gpt4 key购买 nike

我正在使用 Spring Boot 和 HATEOAS 构建一个 REST API,当我的 API 返回一个集合时,它被包装在一个“_embedded”属性中,如下所示:

{
"_links":{
"self":{
"href":"http://localhost:8080/technologies"
}
},
"_embedded":{
"technologies":[
{
"id":1,
"description":"A",
"_links":{
"self":{
"href":"http://localhost:8080/technologies/1"
}
}
},
{
"id":2,
"description":"B",
"_links":{
"self":{
"href":"http://localhost:8080/technologies/2"
}
}
}
]
}
}

我希望回复是这样的:

{
"_links":{
"self":{
"href":"http://localhost:8080/technologies"
}
},
"technologies":[
{
"id":1,
"description":"A",
"_links":{
"self":{
"href":"http://localhost:8080/technologies/1"
}
}
},
{
"id":2,
"description":"B",
"_links":{
"self":{
"href":"http://localhost:8080/technologies/2"
}
}
}
]
}

我的技术 Controller :

@RestController
@ExposesResourceFor(Technology.class)
@RequestMapping(value = "/technologies")
public class TechnologiesController {
...
@ResquestMapping(method = RequestMethod.GET, produces = "application/vnd.xpto-technologies.text+json")
public Resources<Resource<Technology>> getAllTechnologies() {
List<Technology> technologies = technologyGateway.getAllTechnologies();
Resources<<Resource<Technology>> resources = new Resources<Resource<Technology>>(technologyResourceAssembler.toResources(technologies));
resources.add(linkTo(methodOn(TechnologiesController.class).getAllTechnologies()).withSelfRel());
return resources;
}

配置类有注解@EnableHypermediaSupport(type = EnableHypermediaSupport.HypermediaType.HAL)。

在没有“_embedded”的情况下产生响应的最佳方法是什么?

最佳答案

作为 documentation

application/hal+json responses should be sent to requests that accept application/json

为了在您的响应中省略 _embedded,您需要添加

spring.hateoas.use-hal-as-default-json-media-type=false

application.properties

关于spring - 如何删除 Spring HATEOAS 中的 "_embedded"属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28808220/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com