Spring Boot在调用Eureka REST 接口返回格式为xml格式,想改为json格式
解决办法
请求头部改为 Accept: text/html, application/xhtml+xml, application/json;q=0.9, */*;q=0.8
问题描述
GET http://127.0.0.1:8761/eureka/apps
<applications>
<versions__delta>1</versions__delta>
<apps__hashcode>UP_12_</apps__hashcode>
</application>
<!--其它省略-->
问题原因
eureka server 依赖了
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
</dependency>
改变了原来Spring Boot的默认配置,参考:https://www.jianshu.com/p/cb3915db8aa8
解决办法
其实解决办法有很多种,可以通过代码设置默认返回,详细参考官方博客:https://spring.io/blog/2013/05/11/content-negotiation-using-spring-mvc
但我觉得最简单的办法是设置请求头,以下摘自(https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Accept):
Accept
请求头用来告知(服务器)客户端可以处理的内容类型,这种内容类型用MIME类型来表示。借助内容协商机制, 服务器可以从诸多备选项中选择一项进行应用,
并使用 Content-Type
应答头通知客户端它的选择。
默认值为 Accept: text/html, application/xhtml+xml, application/xml;q=0.9, */*;q=0.8
*/*
任意类型的 MIME 类型
;q=
(q因子权重):值代表优先顺序,用相对质量价值表示,又称作权重。
可见在默认值种xml优先级比json优先级高,可设置为:
Accept: text/html, application/xhtml+xml, application/json;q=0.9, */*;q=0.8