4

我想默认禁用 HAL 格式。

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

spring.hateoas.use-hal-as-default-json-media-type=false

然后测试它:

1. 带标头的请求Accept: application/json

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

回复:

{
  "links": {}
}

2. 请求有标头Accept: */*或无Accept标头。

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

回复:

{
  "_embedded": {},
  "_links": {}
}

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

无论如何,当没有指定标头时,让hateoas 响应没有 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"
    }
  }
}

带有 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"
    }
  }
}

默认情况下我不想要 HAL,所以我resources/application.properties在项目中添加了一个配置文件。

spring.hateoas.use-hal-as-default-json-media-type=false

并再次测试。

带有 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"
    }
  }
}

带有 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"
    }
  ]
}
4

0 回答 0