如何使用Spring HATEOAS更改HAL链接格式

时间:2014-09-07 11:25:43

标签: spring rest spring-mvc spring-hateoas hal

我正在使用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 ResourceResourceAssembler

为什么我会使用此格式而不是其他格式?我怎样才能改变它?

2 个答案:

答案 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。

引用:袁姬Design and Build RESTful API with Spring HATEOAS

答案 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>