我正在使用Spring HATEOAS(0.16.0.RELEASE)构建Spring REST应用程序,我希望JSON链接输出看起来像:
_links: {
self: {
href: "https://<ip>/api/policies/321"
}
}
虽然它呈现如下:
"links":
[{
"rel":"self",
"href":"http://<ip>/api/policies/321"
}]
我正在使用HATEOAS Resource
和ResourceAssembler
。
为什么我会使用此格式而不是其他格式?我怎样才能改变它?
答案 0 :(得分:12)
为了使用HAL作为RESTful的消息格式语言 API,并启用自动分页,我们需要一些配置 我们的应用程序发生了变化。自Spring Data和Spring HATEOAS以来 已经为配置提供了注释,我们只需要添加 那些注释:
@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将添加对分页和支持的支持 @EnableHypermediaSupport(type = {HypermediaType.HAL})将添加 超媒体支持。然后我们将默认内容类型设置为 应用/ HAL + JSON。
答案 1 :(得分:1)
确保您使用com.fasterxml.jackson
依赖关系,而不是org.codehaus.jackson
之类的其他关联。例如,在Maven pom.xml中:
<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>