返回Json和XML两种格式
(⼀) 返回不同格式的⼏种⽅式
1) 改变请求后缀的⽅式改变返回格式
2) 以参数的⽅式要求返回不同的格式
3) 直接在修改controller中每个接⼝的请求头,这种⽅式是指定该接⼝返回什么格式的数据
返回XML
@GetMapping(value = "/findByUsername",produces = { "application/xml;charset=UTF-8" })
返回Json
@GetMapping(value = "/findByUsername",produces = { "application/json;charset=UTF-8" })
(⼆) 使⽤ 1 、 2 两种⽅式
主要就只有⼀个配置
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
@Override网络上xml是什么意思
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.favorPathExtension(true) //是否⽀持后缀的⽅式
.favorParameter(true) //是否⽀持请求参数的⽅式
.parameterName("format") //请求参数名
.defaultContentType(MediaType.APPLICATION_ATOM_XML); //默认返回格式
}
}
有了这个配置之后,基本上第⼀种第⼆种都实现了,请求的时候json没有问题,但是XML返回是空的,没有任何返回,这是因为你项⽬中没有xml的解析,
在l中加上
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
</dependency>
然后完美解决
⽅案⼀
⽅案⼆
(三) 第三种,指定返回格式
@GetMapping(value = "/findByUsername",produces = { "application/xml;charset=UTF-8" })
public ResponseResult findByUsername(String username){
if ("admin".equals(username)){
User user = new User();
user.setUsername(username);
user.setCity("中国");
user.setSex("⼥");
return new ResponseResult().setData(user);
}else {
return new ResponseResult("000000");
}
}
这个主要就是修改mapping注解中的produces = { "application/xml;charset=UTF-8" }
但是切记,第三种⽅式和前两种⽅式不能同时存在,当你加⼊了配置之后再使⽤第三种⽅式会导致不到这个路径,所以你⾃⼰看吧(四) 在SpringBoot中在yml中配置
spring:
mvc:
contentnegotiation:
#favor-path-extension: true #这个配置了但是不能使⽤,具体原因未知,这⾥就直接注释了
favor-parameter: true
parameter-name: Format
使⽤这个配置的⽅式可以不⽤写代码了,但是在灵活性上要稍微差⼀点,但是如果你追求简洁,这种⽅式⼜恰好能满⾜你的需求,这也是个不错的选择
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论