web-dev-qa-db-ja.com

SpringHATEOASを使用して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を使用しています。

なぜ他のフォーマットの代わりにこのフォーマットを取得するのですか?どうすれば変更できますか?

23
Tony Arad Felik

RESTful APIのメッセージ形式言語としてHALを使用し、自動ページ付けを有効にするには、アプリケーションでいくつかの構成変更が必要です。 SpringDataとSpringHATEOASはすでに構成用のアノテーションを提供しているため、必要なのはそれらのアノテーションを追加することだけです。

@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})はハイパーメディアサポートを追加します。次に、デフォルトのコンテンツタイプをapplication/hal + jsonに設定します。

引用: SpringHATEOASを使用したRESTfulAPIの設計と構築 Yuan Ji

12
inf3rno

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>
1
Naveen raj