SpringBoot项目在集成了Eureka之后,Controller接口返回的信息变成了xml格式的,但现在一般都是使用的json来进行数据交互,所以有了如下解决方案。
解决之前
接口信息:
@GetMapping(value = "all")
public Result all() {
Demo byId = service.getById("1");
return new Result(CodeEnum.SUCCESS.get(), byId, LocalDateTime.now().toString());
}
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL5NGRORTTE1ENNpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLzADN2UjN0cTM4ITMxAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
此时pom.xml中的相关依赖如下:
<!-- eureka [start] -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<!-- eureka [end] -->
解决方案1
在接口的GetMapper注解上加上如下属性即可
produces = MediaType.APPLICATION_PROBLEM_JSON_VALUE
@GetMapping(value = "all", produces = MediaType.APPLICATION_PROBLEM_JSON_VALUE)
public Result all() {
Demo byId = service.getById("1");
return new Result(CodeEnum.SUCCESS.get(), byId, LocalDateTime.now().toString());
}
解决方案2
接口多了之后,每个接口上加produces也比较麻烦,所以修改eureka依赖为:spring-cloud-starter-netflix-eureka-client
<!-- eureka [start] -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- eureka [end] -->
Controller接口无需改动
@GetMapping(value = "all")
public Result all() {
Demo byId = service.getById("1");
return new Result(CodeEnum.SUCCESS.get(), byId, LocalDateTime.now().toString());
}