【问题标题】: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。

标签: java spring spring-boot


【解决方案1】:

ci_ 上面的评论是正在发生的事情。拥有 XmlMapper 会导致执行器端点返回 XML。点击 /env.json 端点将为我解决问题。

【讨论】:

    猜你喜欢
    • 2020-02-18
    • 2015-04-02
    • 2016-04-27
    • 2020-02-07
    • 2016-06-01
    • 2020-10-26
    • 2020-09-15
    • 1970-01-01
    • 2016-09-07
    相关资源
    最近更新 更多