tutorial resourcesupport form docs controllerlinkbuilder spring rest spring-mvc spring-hateoas hal

spring - form - resourcesupport



Cómo cambiar el formato de enlaces HAL usando Spring HATEOAS (3)

Para utilizar HAL como el lenguaje de formato de mensaje para nuestra API RESTful, y habilitar la paginación automática, necesitamos algunos cambios de configuración en nuestra aplicación. Dado que Spring Data y Spring HATEOAS ya proporcionan anotaciones para la configuración, todo lo que necesitamos es agregar esas anotaciones:

@Configuration @EnableWebMvc @EnableSpringDataWebSupport @EnableHypermediaSupport(type = { HypermediaType.HAL }) @ComponentScan(basePackages = { "com.jiwhiz.rest" }) public class WebConfig extends WebMvcConfigurerAdapter { @Override public void configureContentNegotiation(ContentNegotiationConfigurer c) { c.defaultContentType(MediaTypes.HAL_JSON); } }

@EnableSpringDataWebSupport agregará soporte para paginación y @EnableHypermediaSupport (type = {HypermediaType.HAL}) agregará soporte para hipermedia. Luego configuramos el tipo de contenido predeterminado en application / hal + json.

cite: Diseñe y cree una API RESTful con Spring HATEOAS de Yuan Ji

Estoy creando una aplicación Spring REST utilizando Spring HATEOAS (0.16.0.RELEASE) y me gustaría que la salida de los enlaces JSON se vea como:

_links: { self: { href: "https://<ip>/api/policies/321" } }

mientras se rinde como:

"links": [{ "rel":"self", "href":"http://<ip>/api/policies/321" }]

Estoy usando HATEOAS Resource y ResourceAssembler .

¿Por qué obtengo este formato en lugar del otro? ¿Cómo puedo cambiarlo?


Asegúrese de configurar el encabezado de solicitud de Accept siguiente manera:

Accept: application/hal+json


Asegúrese de utilizar la dependencia com.fasterxml.jackson lugar de otras como org.codehaus.jackson . Por ejemplo, en un pom.xml Maven:

<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.5.3</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.5.3</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.5.3</version> </dependency>