【发布时间】:2015-07-10 06:25:00
【问题描述】:
我们有几个 Spring Boot 应用程序作为微服务运行。它们中的每一个都在运行 spring boot 执行器,以允许我们监控 /metrics、/env、/health 等。在其中一个服务上,/env 端点在浏览器中请求时以 XML 格式返回数据。此外,XML 无效,但我真正关心的是让端点以 json 格式返回数据。 XML 无效的原因是因为我们使用的是 Spring Cloud Config,并且第一个元素包含 GitHub URL,这使其无效。
<LinkedHashMap xmlns=""><profiles>development</profiles><configService:https://github.com/ourcompany/configs/usage.yml>
我找不到关于这个项目的任何不同之处,可以让数据以 json 格式返回。
如果我使用 cURL 并传递带有 value = application/json 的 Accept 标头,服务将正确返回 json,但为什么浏览器返回 XML?我还注意到这个服务是我可以通过 Accept = application/xml 并让它返回 XML,但我的其他服务在请求 XML 时返回 406 Not Acceptable 响应。奇怪。
我们正在使用 spring-boot-starter-parent 版本 1.2.2.RELEASE 以及 spring-cloud-starter 1.0.0.RELEASE。
【问题讨论】:
-
在发布后注意到如果我请求 /env.json 我可以获取 json 中的数据,所以这可能会解决问题,但它仍然引出了一个问题,为什么这项服务允许 XML被退回,但其他人返回 406?
-
在依赖项中有
jackson-dataformat-xml的机会吗?如果可用,XmlMapper将被自动配置。或者在返回的对象上添加@XmlRootElement注释,在这种情况下可能会使用 JAXB。
标签: java spring spring-boot