返回Json和XML两种格式
由于项目需要,同一接口支持根据参数不同返回XML和Json两种格式的数据,在网上看了很多大多是加后缀的方式来实现返回不同格式数据的,后来看了一篇http://www.importnew.com/27632.html 挺不错,而且讲解的很细致
(一) 返回不同格式的几种方式
1) 改变请求后缀的方式改变返回格式
http://localhost:8080/login.xml
http://localhost:8080/login.json
2) 以参数的方式要求返回不同的格式
http://localhost:8080/login?format=json
http://localhost:8080/login?format=xml
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
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.favorPathExtension(true) //是否支持后缀的方式
.favorParameter(true) //是否支持请求参数的方式
.parameterName("format") //请求参数名
.defaultContentType(MediaType.APPLICATION_ATOM_XML); //默认返回格式
}
}
有了这个配置之后,基本上第一种第二种都实现了,请求的时候json没有问题,但是XML返回是空的,没有任何返回,这是因为你项目中没有xml的解析,
在pom.xml中加上
<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("");
}
}
这个主要就是修改mapping注解中的produces = { "application/xml;charset=UTF-8" }
但是切记,第三种方式和前两种方式不能同时存在,当你加入了配置之后再使用第三种方式会导致找不到这个路径,所以你自己看吧
(四) 在SpringBoot中在yml中配置
spring:
mvc:
contentnegotiation:
#favor-path-extension: true #这个配置了但是不能使用,具体原因未知,这里就直接注释了
favor-parameter: true
parameter-name: Format
使用这个配置的方式可以不用写代码了,但是在灵活性上要稍微差一点,但是如果你追求简洁,这种方式又恰好能满足你的需求,这也是个不错的选择
https://github.com/SunArmy/result 这是在写的时候一边写博客一边写Demo
返回Json和XML两种格式的更多相关文章
- Asp.net Web API 返回Json对象的两种方式
这两种方式都是以HttpResponseMessage的形式返回, 方式一:以字符串的形式 var content = new StringContent("{\"FileName ...
- JavaWeb 返回json数据的两种方式
1.说明 由于一般情况下,由浏览器(前端)发送请求,服务器(后台)响应json数据,所以这里结合js进行说明: A服务器发送请求至B服务器,并接收其返回的json数据,见文末推荐,这里不再赘述! 2. ...
- ajax返回json对象的两种写法
1. 前言 dataType: 要求为String类型的参数,预期服务器返回的数据类型.如果不指定,JQuery将自动根据http包mime信息返回responseXML或responseText,并 ...
- MVC中返回json数据的两种方式
MVC里面如果直接将数据返回到前端页面,我们常用的方式就是用return view(): 那么我不想直接用razor语法,毕竟razor这玩意儿实在是太难记了,还不如写ajax对接来得舒服不是 那么我 ...
- log4j配置参考手册:log4j.properties和log4j.xml两种格式
log4j是Java Web开发中,最常用的日志组件之一.网上关于log4j的配置满天飞,我主要是从网上学习的配置.之前的很多年,主要使用log4j.properties这种格式.后来,项目中boss ...
- Python第十四天 序列化 pickle模块 cPickle模块 JSON模块 API的两种格式
Python第十四天 序列化 pickle模块 cPickle模块 JSON模块 API的两种格式 目录 Pycharm使用技巧(转载) Python第一天 安装 shell 文件 Py ...
- Json传递数据两种方式(json大全)
1.Json传递数据两种方式(json大全)----------------------------字符串 var list1 = ["number","name&quo ...
- Spring MVC中返回JSON数据的几种方式
我们都知道Spring MVC 的Controller方法中默认可以返回ModeAndView 和String 类型,返回的这两种类型数据是被DispatcherServlet拿来给到视图解析器进行继 ...
- Java构造和解析Json数据的两种方法详解二
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面接着介绍用org.json构造和解析Jso ...
随机推荐
- 怎么提交小程序给微信?微信小程序的提交审核流程
开发者开发好一款微信小程序后,如何将其提交给微信审核呢?今天正好有空,就整理了一下小程序的提交流程,以供大家参考.如果要发布小程序,那么你需要申请真正的小程序账号,拿到appId,才能在手机预览.及提 ...
- Java核心技术 卷一 复习笔记(甲
1.数据类型包含八种基本类型,其中四种整形(int/short/long/byte),两种浮点类型(float/double), 一种用于表示Unicode编码的字符类型char,一种表示真值的boo ...
- Discuz 部署,500 – 内部服务器错误。 您查找的资源存在问题,因而无法显示。
Windows7 IIS 500 – 内部服务器错误解决方案 1.解决方法:打开IIS,在功能视图中找到“错误页”,双击进去后,看最右边的“操作”下的“编辑功能设置…”,将“错误响应”下的“详细错误” ...
- 【Codeforces 494A】Treasure
[链接] 我是链接,点我呀:) [题意] 让你把"#"用至少一个右括号代替 使得整个括号序列合法 [题解] 首先我们不要考虑井号 考虑最简单的括号序列 并且把左括号看成1,右括号看 ...
- HDU 1018 阶乘数的位数
题目大意: 将一个数开阶乘后得到的值,来求这个值的位数 n! = 1*2*3*4...*n 对于求一个数的位数的方法为ans = lg(n!) + 1 那么就可以看作 ans = lg(1) + lg ...
- [luoguP1507] NASA的食物计划(DP)
传送门 二位费用背包 ——代码 #include <cstdio> #include <iostream> int n, maxv, maxw; ][]; inline int ...
- VScode输出中文乱码的解决方法------测试过可以用
用python写个爬虫,配置个VScode环境,发现输出都是乱码,翻阅网站后发现一个简单有效的方法,在此谢过网络上的大牛们的无私分享,我也在此记录一下,以备后用: 文件---->首选项----& ...
- [K/3Cloud] 首页增加一个自定义页签及页面内容
在K3Cloud登录后的门户首页增加一个页签,如增加一个[BBS论坛] 2013-7-30 11:18:51 上传 下载附件 (84.81 KB) 增加页签 可以这么来做: 进入BOS IDE ,找 ...
- -- > define的用法与学习(1)
在不久之前,我一直不理解为神马大家在做题时经常用define来代替某些函数,或者用来直接定义某些极大的变量.It is not until today that I understand why it ...
- Spring Boot在开发时实现热部署(开发时修改文件保存后自动重启应用)(spring-boot-devtools)
热部署是什么 大家都知道在项目开发过程中,常常会改动页面数据或者修改数据结构,为了显示改动效果,往往需要重启应用查看改变效果,其实就是重新编译生成了新的Class文件,这个文件里记录着和代码等对应的各 ...