spring-hateoas 与 `use-hal-as-default-json-media-type=false` 仍然默认响应 `application/hal+json`

Fal*_*nIA 5 spring-hateoas hal-json spring-boot

我想默认禁用 HAL 格式。

流文档,我设置了这个属性。

spring.hateoas.use-hal-as-default-json-media-type=false
Run Code Online (Sandbox Code Playgroud)

然后测试一下:

1. 带 header 的请求Accept: application/json

标题:Content-Type: application/json;charset=UTF-8

回复:

{
  "links": {}
}
Run Code Online (Sandbox Code Playgroud)

2. 带标头Accept: */*或不带Accept标头的请求。

标题:Content-Type: application/hal+json;charset=UTF-8

回复:

{
  "_embedded": {},
  "_links": {}
}
Run Code Online (Sandbox Code Playgroud)

版本spring-boot是1.5.3,我用的是spring-boot-starter-hateoas.

无论如何,在没有指定 header 的情况下,是否让 hatoas 在没有 HAL 的情况下响应 json?

多谢。


更新:

这是基于spring.io 指南的示例。

请求地址:http://localhost:8080/greeting

带有 header 的请求Accept: */*

HTTP/1.1 200 
Content-Type: application/hal+json;charset=UTF-8

{
  "content":"Hello, World!",
  "_links":{
    "self":{
      "href":"http://localhost:8080/greeting?name=World"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

带有 header 的请求Accept: application/json

HTTP/1.1 200 
Content-Type: application/json;charset=UTF-8

{
  "content":"Hello, World!",
  "_links":{
    "self":{
      "href":"http://localhost:8080/greeting?name=World"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

默认情况下我不需要 HAL,因此我resources/application.properties向项目添加了一个配置文件。

spring.hateoas.use-hal-as-default-json-media-type=false
Run Code Online (Sandbox Code Playgroud)

并再次测试。

带有 header 的请求Accept: */*

HTTP/1.1 200 
Content-Type: application/hal+json;charset=UTF-8

{
  "content":"Hello, World!",
  "_links":{
    "self":{
      "href":"http://localhost:8080/greeting?name=World"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

带有 header 的请求Accept: application/json

HTTP/1.1 200 
Content-Type: application/json;charset=UTF-8

{
  "content":"Hello, World!",
  "links":[
    {
      "rel":"self",
      "href":"http://localhost:8080/greeting?name=World"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)