HTTP中form-data、x-www-form-urlencoded、raw、binary的区别

server/2025/1/17 23:19:34/
http://www.w3.org/2000/svg" style="display: none;">

前言

在日常接口对接工作中经常遇到如上HTTP请求类型,虽然最常用的是POST但是即便这种方式也会在第三方应用中看到不同的请求格式;现总结下以方便区分。

https://i-blog.csdnimg.cn/direct/0e36c88a33f14ac5a83fdb02ca3d4cbb.png" alt="" />

常见的请求类型

格式说明
form-data就是http请求中的multipart/form-data,它会将表单的数据处理为一条消息,以boundary标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Content-Type来说明文件类型;content-disposition,用来说明字段的一些信息;由于有boundary隔离,所以multipart/form-data既可以上传文件,也可以上传键值对,它采用了键值对的方式,所以可以上传多个文件
x-www-form-urlencoded就是application/x-www-from-urlencoded,会将表单内的数据转换为键值对name=java&age = 23 ,当模拟表单上传数据时,用此选项,但不能上传文件,只能是文本格式
raw可以上传text、json、xml、html等格式,当后端要求json数据格式的时候,就要使用此种格式来测试
binary相当于Content-Type:application/octet-stream,从字面意思得知,只可以上传二进制数据,通常用来上传文件,由于没有键值,所以,一次只能上传一个文件。这个不是很常用
GraphQL不常用

需要注意的是multipart/form-data与x-www-form-urlencoded区别:

multipart/form-data:既可以上传文件等二进制数据,也可以上传表单键值对,只是最后会转化为一条信息;

x-www-form-urlencoded:只能上传键值对,并且键值对都是间隔分开的。

multipart/form-data格式

每个字段可以指定不同的格式,text和file;相比其他格式它的最大区别
可以看到它会把form中的字段合成一个报文字符串,然后每个字段用boundary的随机字符串值做分割线,而数据则根据每个分割中的Content-Type类型加载不同的数据,默认是字符串,如果是文件则会加载文件二进制数据;


GET /interfaceService/hrpjob/00 HTTP/1.1
Host: localhost:8607
Content-Length: 374
Content-Type: multipart/form-data; 
boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="name"zjcjava
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="age"18
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file1"; filename="/C:/Users/zjcjava/Downloads/1.jpg"
Content-Type: image/jpeg(data)
----WebKitFormBoundary7MA4YWxkTrZu0gW

https://i-blog.csdnimg.cn/direct/3a1f4e55988b4e719c2fa5df285e9a03.png" alt="在这里插入图片描述" />

x-www-form-urlencoded格式

会把form中的数据合并为键值对的方式用&拼接为一个字符串;这种格式不能上传文件,只能传递文本字符串

GET /interfaceService/hrpjob/00 HTTP/1.1
Host: localhost:8607
Content-Type: application/x-www-form-urlencoded
Content-Length: 19name=zjcjava&age=18

https://i-blog.csdnimg.cn/direct/19789ae7b3ca4855ad629d4f6588f606.png" alt="在这里插入图片描述" />

raw格式化字符串格式

Content-Type必须指定统一格式化类型,可以上传text、json、xml、html等格式,里面只有一种格式参数

GET /interfaceService/hrpjob/00 HTTP/1.1
Host: localhost:8607
Content-Type: application/json
Content-Length: 22{"adf": 13243
}

https://i-blog.csdnimg.cn/direct/5173e7676ef845cc8100fd7e1352c0ff.png" alt="在这里插入图片描述" />


http://www.ppmy.cn/server/159199.html

相关文章

微软开源AI Agent AutoGen 详解

AutoGen是微软发布的一个用于构建AI Agent系统的开源框架,旨在简化事件驱动、分布式、可扩展和弹性Agent应用程序的创建过程。 开源地址: GitHub - microsoft/autogen: A programming framework for agentic AI 🤖 PyPi: autogen-agentchat Discord: https://aka.ms/auto…

人工智能之深度学习-[1]-了解深度学习

深度学习 深度学习(Deep Learning)是机器学习(Machine Learning)的一种方法,它通过模拟人脑的神经网络结构来进行学习和推理。深度学习使用多层神经网络来分析和建模数据,尤其擅长处理大量数据和复杂模式的…

在 Debian 上安装 Docker

在 Debian 上安装 Docker 可以通过以下步骤完成。以下是详细的指导,确保你按照这些步骤操作,以便顺利安装 Docker: 更新现有的包索引 首先,确保你的系统是最新的。 sudo apt-get update sudo apt-get upgrade -y安装必要的依赖项…

【Linux系统】—— vim 的使用

【Linux系统】—— vim 的使用 1 vim 的基本概念2 vim 的多模式3 命令模式下的命令集3.1 进入/退出其他模式3.2 光标移动命令集3.3 复制/剪切/粘贴/删除命令集3.4 撤销命令集3.5 查找命令集3.6 替换命令集3.7 进入与退出替换模式 4 批量化编译5 底行模式6 vim 小技巧7 vim简单配…

Visual Studio Community 2022(VS2022)安装方法

废话不多说直接上图: 直接上步骤: 1,首先可以下载安装一个Visual Studio安装器,叫做Visual Studio installer。这个安装文件很小,很快就安装完成了。 2,打开Visual Studio installer 小软件 3&#xff0c…

国产游戏行业的挑战与机遇:IT技术如何引领未来

近年来,国产游戏行业如同一颗璀璨的新星,在全球游戏市场中冉冉升起。从早期的模仿与跟随,到如今的多领域技术创新,中国游戏开发者展现出了非凡的实力与潜力。然而,面对全球市场的激烈竞争,国产游戏技术仍面…

【CSS】---- CSS 实现超过固定高度后出现展开折叠按钮

1. 实现效果 2. 实现方法 使用 JS 获取盒子的高度,来添加对应的按钮和样式;使用 CSS 的浮动效果,参考CSS 实现超过固定高度后出现展开折叠按钮;使用容器查询 – container 语法;使用 clamp 函数进行样式判断。 3. 优…

掌控 JMeter 测试节奏:Once Only Controller 让关键操作 “一步到位”

嘿,小伙伴们!假设你已经顺利安装好 JMeter,也搭建起了测试计划,还添加了线程组,那咱们这就直奔主题,深入探究一下 Once Only Controller 这个超厉害的 “小帮手”,看看它是怎么在性能测试里大显…