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

目录

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

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


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

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

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

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

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

引入依赖

html 复制代码
  <!-- 引入支持返回 xml 数据格式 -->
        <dependency>
            <groupId>com.fasterxml.jackson.dataformat</groupId>
            <artifactId>jackson-dataformat-xml</artifactId>
            <version>2.8.5</version>
        </dependency>

编写控制器

java 复制代码
@Controller
@RequestMapping("/user")
public class MyController1 {
    @Autowired
    private UserMapper userMapper;
    @RequestMapping("/findById")
    @ResponseBody
    public user findById(Integer id){
        return userMapper.findById(id);
    }
}

postman进行测试

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

默认

修改为xml数据格式

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

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

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

php 复制代码
spring:
    #开启请求参数的内容协商机制
  mvc:
    contentnegotiation:
      #开启基于参数的内容协商机制
      favor-parameter: true
      #给这个键起名字,这个键的值就是xml,json那些数据格式
      parameter-name: format

使用postman进行测试

json

xml

相关推荐
蜜獾云几秒前
windows java jar 包后台运行
java
€8114 分钟前
Java入门级教程29——Spring Cloud:Eureka 注册发现 + MySQL 数据交互 + 负载均衡
java·开发语言·mysql·spring cloud·eureka·负载均衡
xiaohuoji1294 分钟前
SpringBoot中整合RabbitMQ(测试+部署上线 最完整)
spring boot·rabbitmq·java-rabbitmq
澄风5 分钟前
深入理解Java SPI:机制、原理、实战与开源框架应用全解析
java·开发语言·开源
希望永不加班6 分钟前
SpringBoot 接口测试:Postman 与 JUnit 5 实战
java·spring boot·后端·junit·postman
yzx9910139 分钟前
Java毕业设计实战:基于Spring Boot的在线图书管理系统(完整版)
java·spring boot·课程设计
yaaakaaang10 分钟前
二、工厂方法模式
java·工厂方法模式
tumeng071110 分钟前
跟据spring boot版本,查看对应的tomcat,并查看可支持的tomcat的版本范围
spring boot·后端·tomcat
深邃-10 分钟前
字符函数和字符串函数(2)
c语言·数据结构·c++·后端·算法·restful
2601_9498163511 分钟前
解决报错net.sf.jsqlparser.statement.select.SelectBody
java