当前位置:   article > 正文

SpringBoot内容协商机制(就是接受数据的类型如json,xml)

SpringBoot内容协商机制(就是接受数据的类型如json,xml)

目录

一、基于请求头的内容协商机制

二、基于请求参数的内容协商机制


一、基于请求头的内容协商机制

如果我们的Java服务为浏览器和安卓手机同时提供服务,浏览器期望接受的请求是JSON格式,安卓客户端期望接收的请求是XML格式,这个时候是否需要写两个方法?

不需要!SpringBoot的内容协商机制可以解决这个问题。

  • 内容协商机制:根据客户端接收能力不同,SpringBoot 返回不同媒体类型的数据。

Spring默认支持内容协商机制,但SpringBoot默认只支持返回Json数据,所以需要导入jackson-dataformat-xml让SpringBoot支持返回xml数据

引入依赖 

  1. <!-- 引入支持返回 xml 数据格式 -->
  2. <dependency>
  3. <groupId>com.fasterxml.jackson.dataformat</groupId>
  4. <artifactId>jackson-dataformat-xml</artifactId>
  5. <version>2.8.5</version>
  6. </dependency>

编写控制器

  1. @Controller
  2. @RequestMapping("/user")
  3. public class MyController1 {
  4. @Autowired
  5. private UserMapper userMapper;
  6. @RequestMapping("/findById")
  7. @ResponseBody
  8. public user findById(Integer id){
  9. return userMapper.findById(id);
  10. }
  11. }

postman进行测试

默认情况下,支持返回的是json格式,修改的在要在请求头中的Accept值修改为application/xml

默认

修改为xml数据格式

二、基于请求参数的内容协商机制

SpringBoot默认情况下是根据请求头不同,返回不同的数据格式。同时我们也可以配置基于请求参数的内容协商,也就是请求参数值的不同,返回不同的数据。

在配置文件中开启基于参数的内容协商机制

  1. spring:
  2. #开启请求参数的内容协商机制
  3. mvc:
  4. contentnegotiation:
  5. #开启基于参数的内容协商机制
  6. favor-parameter: true
  7. #给这个键起名字,这个键的值就是xml,json那些数据格式
  8. parameter-name: format

使用postman进行测试 

json

 xml

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/479436
推荐阅读
相关标签
  

闽ICP备14008679号