Spring Boot Actuator /env 端点以 XML 形式返回数据 - 为啥?
Posted
技术标签:
【中文标题】Spring Boot Actuator /env 端点以 XML 形式返回数据 - 为啥?【英文标题】:Spring Boot Actuator /env endpoint returning data as XML - why?Spring Boot Actuator /env 端点以 XML 形式返回数据 - 为什么? 【发布时间】: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。
【参考方案1】:
ci_ 上面的评论是正在发生的事情。拥有 XmlMapper 会导致执行器端点返回 XML。点击 /env.json 端点将为我解决问题。
【讨论】:
以上是关于Spring Boot Actuator /env 端点以 XML 形式返回数据 - 为啥?的主要内容,如果未能解决你的问题,请参考以下文章
无法访问 Spring Boot Actuator“/actuator”端点
关于spring boot启动监控端点的方法(spring-boot-starter-actuator)