HTTP协议-后端接收请求

起因就是不知道post这个请求体中这些格式有什么区别,后端又怎么去接收这些不同格式的内容
在这里插入图片描述

Get请求

get请求是比较简单的一类
正常的直接用参数接收(不写的话名字要匹配)或者@RequestParam都可以接收,用对象绑定也可以
resultful请求有所不同
Get-resultful格式请求 @PathVariable

@RequestMapping("/info/{id}")  // 未指定 HTTP 方法,默认支持所有方法
public R info(@PathVariable("id") Long id) {SkuFullReductionEntity skuFullReduction = skuFullReductionService.getById(id);return R.ok().put("skuFullReduction", skuFullReduction);
}

post请求

post请求和其他的PUT,DELETE等请求都一样只有GET和他们不一样

📌 1. application/x-www-form-urlencoded(表单默认格式)

数据以 key=value 形式编码,用 & 分隔,例如:

username=John&age=25

适用于 简单键值对,不支持文件上传。
后端接收方式
✅ 使用 @RequestParam 或直接绑定到方法参数

@PostMapping("/submit")
public String submitForm(@RequestParam("username") String username,  // 单个参数接收@RequestParam("age") int age
) {// 业务逻辑
}// 或者自动绑定到对象
@PostMapping("/submit")
public String submitForm(UserForm form) {  // UserForm 需有 username 和 age 属性// 业务逻辑
}

📌 2. multipart/form-data(表单文件上传)!!!

在这里插入图片描述
为什么在apifox都是键值对的形式,感觉这个请求体就很奇怪呐,不是键值对(和1不同),一句话说就是不让用户考虑底层实现,方便快捷,apifox会封装成这种形式发送

其实2就比1多一个文件上传功能,就是可以传文件
相当于既可以传文件也可以传string普通键值
在这里插入图片描述
后端接收
@RequestParam接收普通键值
@RequestPart接收文件类型

@PostMapping("/upload")
public String handleUpload(@RequestParam("username") String name,     // 文本字段@RequestPart("avatar") MultipartFile file  // 文件字段
) {// 1. 获取文本字段System.out.println("用户名:" + name);  // 输出:John// 2. 处理文件file.transferTo(new File("/uploads/" + file.getOriginalFilename()));return "上传成功!";
}

📌 3. application/json(JSON 数据)!!!

数据格式
数据以 JSON 格式传输,例如:

{"username": "John","age": 25,"hobbies": ["coding", "reading"]
}

后端接收方式
✅ 使用 @RequestBody + DTO 对象

@PostMapping("/create")
public String createUser(@RequestBody UserDTO userDTO) {// userDTO 会自动反序列化为 Java 对象// 例如 userDTO.getUsername() 返回 "John"
}// DTO 示例
public class UserDTO {private String username;private int age;private List<String> hobbies;// getters/setters
}

json数组/简单数组

前端payload

[{"catId":23,"sort":0},{"catId":22,"sort":1,"parentCid":1,"catLevel":2},{"catId":24,"sort":2}]

在这里插入图片描述
后端这样就可以接收到对应的参数
注解使用 @RequestBody 也算json数据

public R updateSort(@RequestBody CategoryEntity[] category)

简单数组也可以这样,相当于一个值就是一个json字符串呗
在这里插入图片描述
在这里插入图片描述

📌 4. application/xml(XML 数据)

数据格式
数据以 XML 格式传输,例如:

<user><name>John</name><age>25</age>
</user>

后端接收方式
✅ 使用 @RequestBody + JAXB 注解对象(需配置 XML 解析器)

@PostMapping("/xml")
public String handleXml(@RequestBody UserXml userXml) {// userXml.getName() 返回 "John"
}// XML 映射对象
@XmlRootElement
public class UserXml {private String name;private int age;// getters/setters
}

📌 5. binary data(二进制流)

数据格式
数据为原始二进制(如图片、PDF、音频等),例如:

(文件的二进制流...)

后端接收方式
✅ 使用 InputStream 或 byte[]

@PostMapping("/binary")
public String handleBinary(InputStream dataStream) {// 手动读取流数据
}// 或者直接接收字节数组
@PostMapping("/binary")
public String handleBinary(@RequestBody byte[] data) {// 直接操作字节数组
}

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

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

相关文章

HTML5 实现的圣诞主题网站源码,使用了 HTML5 和 CSS3 技术,界面美观、节日氛围浓厚。

以下是一个 HTML5 实现的圣诞主题网站源码&#xff0c;使用了 HTML5 和 CSS3 技术&#xff0c;界面美观、节日氛围浓厚。它包括&#xff1a; 圣诞树动画 &#x1f384;雪花飘落特效 ❄️圣诞祝福语 &#x1f381;响应式布局&#xff0c;适配移动端 你可以将代码保存为 index.…

Spring Cloud Bus 和 Spring Cloud Stream

Spring Cloud Bus 和 Spring Cloud Stream 都是 Spring Cloud 生态中的消息通信组件&#xff0c;但它们的定位和使用场景有显著区别&#xff1a; 1. Spring Cloud Bus 核心定位&#xff1a;分布式系统的消息广播&#xff08;配置刷新、事件传播&#xff09;。 典型场景&#x…

磁悬浮轴承位移信号的高精度估计:卡尔曼滤波算法深度解析

无需位移传感器,滤波算法如何实现微米级精度? 磁悬浮轴承作为革命性的非接触式支承技术,凭借无磨损、无需润滑、高转速等优势,在飞轮储能、高速电机、人工心脏泵和航空航天领域获得了广泛应用。其核心控制依赖于对转子位移信号的高精度实时检测,传统电涡流传感器虽能提供位…

DAY 43 预训练模型

目录 一、预训练的概念 二、 经典的预训练模型 2.1 CNN架构预训练模型 2.2 Transformer类预训练模型 2.3 自监督预训练模型 三、常见的分类预训练模型介绍 3.1 预训练模型的发展史 3.2 预训练模型的训练策略 知识点回顾&#xff1a; 预训练的概念常见的分类预训练模型图像…

Redis:事物

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Redis &#x1f525; 什么是事务 Redis的事务和MySQL的事务概念上是类似的.都是把⼀系列操作绑定成⼀组.让这⼀组能够批量执⾏. 但是注意体会Redis的事务和MySQL事务的区别: 弱化的原⼦性:redi…

CppCon 2018 学习:An allocator is a handle to a heap Lessons learned from std::pmr

“An allocator is a handle to a heap — Lessons learned from std::pmr” 翻译过来就是&#xff1a;“分配器&#xff08;allocator&#xff09;是对堆&#xff08;heap&#xff09;的一种句柄&#xff08;handle&#xff09;——从 std::pmr 中学到的经验”。 基础概念 分…

设备健康实时监测方法演进:从传感网络到AI决策树的工业智能实践

引言&#xff1a;当设备运维遇上AIoT革命 在工业4.0进程中&#xff0c;​毫秒级设备状态捕获能力正成为智能工厂的核心竞争力。传统监测方法因数据滞后、诊断粗放被诟病&#xff0c;本文将深入探讨三大前沿实时监测技术路径&#xff0c;并揭秘中讯烛龙系统如何通过深度强化学习…

剑指offer53_二叉树的深度

二叉树的深度 输入一棵二叉树的根结点&#xff0c;求该树的深度。 从根结点到叶结点依次经过的结点&#xff08;含根、叶结点&#xff09;形成树的一条路径&#xff0c;最长路径的长度为树的深度。 数据范围 树中节点数量 [ 0 , 500 ] [0,500] [0,500]。 样例 输入&#…

探秘AI的秘密:leaked-system-prompts

揭秘:揭秘系统提示合集背后的秘密 在当今这个人工智能技术迅速发展的时代,了解和使用大型语言模型(LLM)已成为技术爱好者、开发者和研究人员的共同目标。而作为核心组成部分,系统提示(system prompts)的设计和应用直接影响了LLM的表现和功能。今天, 我们将为大家揭示一…

Gaming Mode四大功能(VRR、QMS、QFT、ALLM)

HDMI 2.1定义的Gaming Mode四大功能&#xff08;VRR、QMS、QFT、ALLM&#xff09;通过协同优化帧传输、刷新率同步与延迟控制&#xff0c;显著提升了游戏和影音的流畅性与响应速度。以下是这些功能的详细解析及其应用价值&#xff1a; &#x1f504; 1. 可变刷新率&#xff08;…

数据库总结(关系代数-函数依赖-范式)

以下是关系代数中基本操作的详细说明&#xff1a; 并&#xff08;Union&#xff09; 关系R和S的并操作表示为R ∪ S&#xff0c;要求R和S具有相同的属性集&#xff08;并相容性&#xff09;。结果包含所有属于R或S的元组&#xff0c;自动去除重复项。 示例&#xff1a; R …

react经验:在nextjs中使用motion组件

什么是motion组件&#xff1f; 一种动画组件 motion组件文档 在nextjs中的应用步骤 1.安装motion npm i framer-motion2.在next.config.js中配置转义 export default {transpilePackages: [framer-motion] }3.开始应用 **注意要点&#xff1a;**在服务端渲染不可直接用&am…

怎样大语言模型 遵守规则

如何让应用中的提示工程更能适应未来变化 目录 如何让应用中的提示工程更能适应未来变化怎样大语言模型 遵守规则提示词 很有效:Memorize these rules提示可分为稳定组件和易变组件怎样大语言模型 遵守规则 实验背景:让大语言模型可靠地遵守规则很难,尤其是规则数量增多时。…

如何通过SSL证书配置防止源站IP泄露 - 全面防护指南

问题背景&#xff1a;SSL证书如何导致源站IP泄露 近期多位站长反馈&#xff0c;即使已部署高防CDN并做好源站IP保密工作&#xff0c;服务器仍频繁遭受DDoS攻击。经深入排查&#xff0c;发现问题根源在于SSL证书。当前网络环境中存在大量爬虫工具24小时不间断扫描全网IP地址&am…

医院信息化发展要经过哪几个阶段

目前&#xff0c;几乎所有的医院都离不开信息技术的建设和支持。没有信息技术&#xff0c;医院的业务可能无法继续。医院信息化的发展主要经历三个阶段&#xff0c;即医院管理信息化阶段、临床管理信息化阶段和医疗智能化阶段。从基础设施的角度来看&#xff0c;每个阶段都有不…

【Vscode】Vscode切换成中文语言

安装中文语言包 启动 VSCode。按下Ctrl Shift X&#xff08;或者点击左侧边栏的扩展图标&#xff09;&#xff0c;打开扩展面板。在搜索框中输入Chinese (Simplified)&#xff0c;在搜索结果里找到Chinese (Simplified) Language Pack for Visual Studio Code并点击安装按钮…

【百日精通JAVA | 数据结构篇】 一文了解泛型体系

一、初识泛型 在推出泛型以前&#xff0c;程序员可以创建一个元素类型Object的集合&#xff0c;该集合能够存储任意的数据类型对象&#xff0c;而在使用该集合的过程中&#xff0c;需要明确知道存储每个元素的类型&#xff0c;否则容易引发ClassCastException异常。 泛型是JD…

赋能 Java 工程,飞算科技重新定义智能开发

在数字经济蓬勃发展的当下&#xff0c;软件开发行业正经历着前所未有的变革。飞算科技作为一家自主创新型的数字科技公司&#xff0c;始终以互联网科技、大数据、人工智能等前沿技术为根基。凭借团队在相关领域多年积累的深厚实践经验&#xff0c;公司深度融合技术与应用&#…

【蓝牙】Linux Qt4蓝牙设备列表刷新加载采用什么策略,使用什么对应的Linux命令或dbus接口

在 Linux 系统中&#xff0c;使用 Qt4 开发蓝牙设备列表刷新功能时&#xff0c;通常会结合 BlueZ 蓝牙协议栈 和 D-Bus 通信机制 实现对蓝牙设备的发现与管理。以下是常见的实现策略和对应的命令或接口。 &#x1f9e9; 一、蓝牙设备列表刷新策略 1. 主动扫描&#xff08;Scan…

产品背景知识——CIFS、SMB 和 Samba

产品背景知识——CIFS、SMB 和 Samba 1. SMB&#xff08;Server Message Block&#xff09; 定义&#xff1a; SMB 是一种网络协议&#xff0c;用于在计算机之间共享文件、打印机、串口等资源。它由 IBM 在 1980 年代开发&#xff0c;后被微软采用并扩展。 发展历程&#xff…