Sto utilizzando Spring Boot e HATEOAS per creare un'API REST e quando la mia API restituisce una raccolta, è racchiusa all'interno di una proprietà "_embedded", in questo modo:Come rimuovere la proprietà "_embedded" in primavera HATEOAS
{
"_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"
}
}
}
]
}
}
voglio la risposta di essere come questo:
{
"_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"
}
}
}
]
}
mio TechnologiesController:
@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;
}
La classe di configurazione ha l'annotazione @EnableHypermediaSupport (type = EnableHypermediaSupport.HypermediaType.HAL).
Qual è il modo migliore per produrre la risposta senza "_embedded"?
Se si rimuove '_embedded' dalla risposta, la risposta non sarà più valida HAL. Devi o restare con '_embedded' o usare un tipo di supporto diverso. –
La bozza HAL dice "La proprietà riservata" _embedded "è FACOLTATIVA" –
È opzionale in quanto una risorsa non deve disporre di risorse incorporate. Tuttavia, se lo fa, allora dovrebbero essere sotto '_embedded'. –