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

news2024/11/18 19:47:00

目录

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

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


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

如果我们的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);
    }
}

postman进行测试

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

默认

修改为xml数据格式

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

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

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

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

使用postman进行测试 

json

 xml

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1621057.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CentOS-7安装clickhouse并允许其他主机登录

一、通用设置 1、配置主机名 hostnamectl set-hostname --static 主机名2、修改hosts文件 vim /etc/hosts 输入&#xff1a; 192.168.15.129 master 192.168.15.133 node1 192.168.15.134 node2 192.168.15.136 node33、 保持服务器之间时间同步 yum install -y ntpdate &…

互联网和嵌入式,哪个更吃香?

在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;显然&#xff0c;互联网更受青…

Vue3+Echarts: 浏览器缩小后,图表内容发生重叠

一、问题 Vue3Echarts项目&#xff1a;浏览器缩小后&#xff0c;图表内容发生重叠。本文将提供几个解决上述问题的思路&#xff0c;后续有新的解决思路将在此处进行补充。 二、解决思路 1、动态调整ECharts配置 如果图表容器的尺寸没有随着浏览器窗口的缩小而进行相应地调整…

<计算机网络自顶向下> 无连接传输UDP

UDP&#xff1a;User Datagram Protocol “尽力而为”的服务 报文可能丢掉或者乱序好处&#xff1a; 效率高&#xff08;不建立连接无拥塞控制和流量控制【应用->传输的速率主机->网络的速率】&#xff09;报文段的头部很小&#xff08;开销小&#xff09;UDP被用于 流媒…

政安晨:【Keras机器学习示例演绎】(七)—— 利用 NeRF 进行 3D 体积渲染

目录 简介 设置 下载并加载数据 NeRF 模型 训练 可视化训练步骤 推理 渲染三维场景 可视化视频 结论 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras机器学习实战 希望政安晨的博客能够对您有所裨益&#xff0…

图像预处理工具_CogPolarUnwrapTool

CogPolarUnwrapTool CogPolarUnwrapTool 工具能够将环形区域通过极坐标变换 转换为矩形区域&#xff0c;方便读取 转换的步骤&#xff1a; 1.根据环形到矩形的映射来构建一个转换关系。 2.根据这个转换关系将输出图像中的像素点映射到输入图像。 3.对输入图像中的点像素进行…

浅析未来:深度学习的挑战与机遇

浅析未来&#xff1a;深度学习的挑战与机遇 1 引言 在过去的十年里&#xff0c;深度学习已经从一个相对边缘的研究领域发展成为计算机科学和人工智能中最为活跃和引人注目的领域之一。无论是在图像识别、自然语言处理、还是在更为复杂的决策制定任务中&#xff0c;深度学习技术…

索引!索引!!索引!!!到底什么是索引?

文章目录 索引的概述索引的优劣势优势劣势 索引的分类实现索引的数据结构B 树&#xff08;B-Tree&#xff09;B树&#xff08;B Tree&#xff09;哈希索引&#xff08;Hash Index&#xff09; 前言&#xff1a; 相信接触过编程的同学都听说过 索引&#xff0c;那么到底什么是索…

第六讲-流程挖掘(Process Mining)学习日志之α算法精讲

第六讲-流程挖掘&#xff08;Process Mining&#xff09;学习日志之α算法精讲 通过给定一个简单的事件日志&#xff0c;α算法可以得到一个(希望)能够重演日志的 Petri 网。同时α算法是最早的能够适当处理并发的过程发现算法之一。 参考&#xff1a;PROCESS MINING&#xff1…

【电子元件】常用的二极管、极管规格参数一览表

目录 1. 常用的二极管规格参数1.1 贴片二极管1.2 直插二极管 2. 常用的三极管规格参数2.1 贴片三极管2.2 直插三极管 参考资料 1. 常用的二极管规格参数 1.1 贴片二极管 型号/封装丝印正向压降(Vf) 反向击穿电压(Vr)平均整流电流(Io)/正向工作电流(If)反向电流(Ir)反向恢复时间…

YOLOv9训练损失、精度、mAP绘图功能 | 支持多结果对比,多结果绘在一个图片(消融实验、科研必备)

一、本文介绍 本文给大家带来的是YOLOv9系列的绘图功能&#xff0c;我将向大家介绍YOLO系列的绘图功能。我们在进行实验时&#xff0c;经常需要比较多个结果&#xff0c;针对这一问题&#xff0c;我写了点代码来解决这个问题&#xff0c;它可以根据训练结果绘制损失(loss)和mA…

怎样用PHP语言实现远程控制三路开关

怎样用PHP语言实现远程控制三路开关呢&#xff1f; 本文描述了使用PHP语言调用HTTP接口&#xff0c;实现控制三路开关&#xff0c;三路开关可控制三路照明、排风扇等电器。 可选用产品&#xff1a;可根据实际场景需求&#xff0c;选择对应的规格 序号设备名称厂商1智能WiFi墙…

园区智慧化转型新篇章:解码智慧技术如何助力园区实现精细化管理,提升运营效率

目录 一、智慧技术概述及其在园区管理中的应用 &#xff08;一&#xff09;物联网技术的应用 &#xff08;二&#xff09;大数据技术的应用 &#xff08;三&#xff09;云计算技术的应用 二、智慧技术助力园区实现精细化管理 &#xff08;一&#xff09;实现资源优化配置…

虚拟主机 克隆机 域名解析

以下情况的处理&#xff1a; [rootlocalhost ~]# yum repolist Loaded plugins: fastestmirror, langpacks Existing lock /var/run/yum.pid: another copy is running as pid 2729. Another app is currently holding the yum lock; waiting for it to exit… The other appli…

<计算机网络自顶向下>

在计算机网络中&#xff0c;网络层包括数据平面和控制平面&#xff0c;它们分别负责网络数据转发和网络路由控制。以下是它们之间的区别&#xff1a; 数据平面&#xff08;Data Plane&#xff09;&#xff1a; 数据平面负责实际的数据传输和转发&#xff0c;它处理网络中的数据…

1593. 拆分字符串使唯一子字符串的数目最大

1593. 拆分字符串使唯一子字符串的数目最大 Java: class Solution {int cnt;int max;Set<String> set;private void dfs(String s, int pos, int len) {if (pos len) {max Math.max(max, cnt);return;}for(int i pos; i < len; i) {String s1 s.substring(pos, i…

制作一个RISC-V的操作系统十三-抢占式多任务和兼容协作式多任务

文章目录 强占式多任务流程代码具体流程兼容协作式多任务&#xff08;软中断&#xff09;寄存器 msip流程代码结果 强占式多任务 流程 抢占式多任务由计时器中断触发&#xff0c;最后在处理程序中切换到下一个进程 代码具体流程 上下文中增加pc寄存器 寄存器保留上下文和切…

npm、yarn与pnpm详解

&#x1f525; npm、yarn与pnpm详解 &#x1f516; 一、npm &#x1f50d; 简介&#xff1a; npm是随Node.js一起安装的官方包管理工具&#xff0c;它为开发者搭建了一个庞大的资源库&#xff0c;允许他们在这个平台上搜索、安装和管理项目所必需的各种代码库或模块。 &#…

借鉴行业巨头,构建策划知识体系,助你成为下一个营销天才

策划是一门理论与实践结合的学问&#xff0c;而策划人需要将理论和实践有机的结合起来&#xff0c;才能实现策划理论知识与实际操作相结合的目的。 很多策划人并不会系统的学习策划知识体系&#xff0c;只是将学到的理论知识碎片化的了解一下&#xff0c;如果没有完整的理论体…

[巅峰极客 2022]smallcontainer

这题我认为是比较有思考意义的。 版本是2.27&#xff0c;有tcachebin&#xff0c;但大部分安全检测都没有。 直接看add函数。 不能得到fastbin&#xff0c;也不能直接0x410分配到unsortedbin了&#xff0c;并且最多同时存在16个chunk。 free后会把指针情况&#xff0c;没有ua…