赞
踩
目录
如果我们的Java服务为浏览器和安卓手机同时提供服务,浏览器期望接受的请求是JSON格式,安卓客户端期望接收的请求是XML格式,这个时候是否需要写两个方法?
不需要!SpringBoot的内容协商机制可以解决这个问题。
- 内容协商机制:根据客户端接收能力不同,SpringBoot 返回不同媒体类型的数据。
Spring默认支持内容协商机制,但SpringBoot默认只支持返回Json数据,所以需要导入
jackson-dataformat-xml
让SpringBoot支持返回xml数据
- <!-- 引入支持返回 xml 数据格式 -->
- <dependency>
- <groupId>com.fasterxml.jackson.dataformat</groupId>
- <artifactId>jackson-dataformat-xml</artifactId>
- <version>2.8.5</version>
- </dependency>
- @Controller
- @RequestMapping("/user")
- public class MyController1 {
- @Autowired
- private UserMapper userMapper;
- @RequestMapping("/findById")
- @ResponseBody
- public user findById(Integer id){
- return userMapper.findById(id);
- }
- }
默认情况下,支持返回的是json格式,修改的在要在请求头中的Accept值修改为application/xml
SpringBoot默认情况下是根据请求头不同,返回不同的数据格式。同时我们也可以配置基于请求参数的内容协商,也就是请求参数值的不同,返回不同的数据。
- spring:
- #开启请求参数的内容协商机制
- mvc:
- contentnegotiation:
- #开启基于参数的内容协商机制
- favor-parameter: true
- #给这个键起名字,这个键的值就是xml,json那些数据格式
- parameter-name: format
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。