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>