由于项目需要,同一接口支持根据参数不同返回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两种格式的更多相关文章

  1. Asp.net Web API 返回Json对象的两种方式

    这两种方式都是以HttpResponseMessage的形式返回, 方式一:以字符串的形式 var content = new StringContent("{\"FileName ...

  2. JavaWeb 返回json数据的两种方式

    1.说明 由于一般情况下,由浏览器(前端)发送请求,服务器(后台)响应json数据,所以这里结合js进行说明: A服务器发送请求至B服务器,并接收其返回的json数据,见文末推荐,这里不再赘述! 2. ...

  3. ajax返回json对象的两种写法

    1. 前言 dataType: 要求为String类型的参数,预期服务器返回的数据类型.如果不指定,JQuery将自动根据http包mime信息返回responseXML或responseText,并 ...

  4. MVC中返回json数据的两种方式

    MVC里面如果直接将数据返回到前端页面,我们常用的方式就是用return view(): 那么我不想直接用razor语法,毕竟razor这玩意儿实在是太难记了,还不如写ajax对接来得舒服不是 那么我 ...

  5. log4j配置参考手册:log4j.properties和log4j.xml两种格式

    log4j是Java Web开发中,最常用的日志组件之一.网上关于log4j的配置满天飞,我主要是从网上学习的配置.之前的很多年,主要使用log4j.properties这种格式.后来,项目中boss ...

  6. Python第十四天 序列化 pickle模块 cPickle模块 JSON模块 API的两种格式

    Python第十四天 序列化  pickle模块  cPickle模块  JSON模块  API的两种格式 目录 Pycharm使用技巧(转载) Python第一天  安装  shell  文件 Py ...

  7. Json传递数据两种方式(json大全)

    1.Json传递数据两种方式(json大全)----------------------------字符串 var list1 = ["number","name&quo ...

  8. Spring MVC中返回JSON数据的几种方式

    我们都知道Spring MVC 的Controller方法中默认可以返回ModeAndView 和String 类型,返回的这两种类型数据是被DispatcherServlet拿来给到视图解析器进行继 ...

  9. Java构造和解析Json数据的两种方法详解二

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面接着介绍用org.json构造和解析Jso ...

随机推荐

  1. MyBatis 创建核心配置文件和 SQL 映射文件

    Mybatis 的两个配置文件(mybatis-config.xml  和 xxxMapper.xml)都为 xml 类型,因此在 eclipse 中创建 xml 文件命名为相应的 mybatis-c ...

  2. BZOJ 1832、1787 洛谷 4281 [AHOI2008]紧急集合

    [题解] 题目要求找到一个集合点,使3个给定的点到这个集合点的距离和最小,输出集合点的编号以及距离. 设三个点为A,B,C:那么我们可以得到Dis=dep[A]+dep[B]+dep[C]-dep[L ...

  3. hdu 1166敌兵布阵(线段树入门题)

    >>点击进入原题测试<< 思路:这两天在学线段树,这个题直接手敲一下线段树就行了,都没有用上懒人标记.入门题 cin,cout会超时,记得加std::ios::sync_wit ...

  4. BNUOJ 1206 A Plug for UNIX

    A Plug for UNIX Time Limit: 1000ms Memory Limit: 65536KB This problem will be judged on PKU. Origina ...

  5. [bzoj1356]Rectangle[Baltic2009][几何常识乱搞]

    虽然说是几何常识乱搞,但是想不到啊.. 题意:n个点取4个组成矩形,使面积最大,求面积. n<=1500 题解: 1.对角线相等且相互交于中点的四边形是矩形. 2.矩形四点共圆. 所以$n^2$ ...

  6. 魔法猪学院(codevs 1835)

    题目描述 Description iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPig对猪世界的世界本原有了很多的了解:众所周知,世 ...

  7. spring历史地址

    http://repo.spring.io/release/org/springframework/spring/

  8. Spring 进行junit单元测试时,出现method ‘initializationError’ 错误

    首先检查一下所有的方法是否为public 然后看是否有commons-logging这个日志包

  9. codevs1004 四子连棋

    题目描述 Description 在一个4*4的棋盘上摆放了14颗棋子,其中有7颗白色棋子,7颗黑色棋子,有两个空白地带,任何一颗黑白棋子都可以向上下左右四个方向移动到相邻的空格,这叫行棋一步,黑白双 ...

  10. Oracle 11.2.0.4.0安装

    http://opensgalaxy.com/2015/08/25/oracle11-2-0-4-0%E5%AE%89%E8%A3%85%E5%8F%8A%E8%A1%A5%E4%B8%81%E8%8 ...