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

ops/2025/1/16 7:38:04/
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/ops/150501.html

相关文章

【Linux探索学习】第二十五弹——动静态库:Linux 中静态库与动态库的详细解析

Linux学习笔记: https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言: 在 Linux 系统中,静态库和动态库是开发中常见的两种库文件类型。它们在编译、链接、内存管理以及程序的性能和可维护性方面有着…

windows下编译php源码

前提需要准备好 vs2022 环境 下载 php sdk,地址 https://github.com/php/php-sdk-binary-tools 中的 release 下载最新版本 解压到比如 d:\develop\php-sdk 目录下 在系统的开始菜单中,找到 x64 Native Tools Command Prompt for vs 2022 点击运行 命令…

Hypium UIViewer 让 MacOS 与鸿蒙NEXT手机实现多屏协同

鸿蒙工具之Hypium 一、前言二、认识 Hypium三、活用 Hypium 的 UIViewer 一、前言 上图呢,是我用华为平板和华为手机进行多屏协同时的界面。多屏协同的好处有很多,其中一个就是可以对手机上的显示页面,在电脑上直接进行截图,而不是…

标准卷积和深度可分离卷积

一、标准卷积 1.1、定义 标准卷积是一种在输入特征图上应用卷积核,以生成输出特征图的操作。卷积核在输入特征图上滑动,计算每个位置的点积,生成新的特征图。 1.2、计算过程 输入特征图:假设输入特征图的尺寸为 HWC,…

CSRF(跨站请求伪造)深度解析

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

【 PID 算法 】PID 算法基础

一、简介 PID即:Proportional(比例)、Integral(积分)、Differential(微分)的缩写。也就是说,PID算法是结合这三种环节在一起的。粘一下百度百科中的东西吧。 顾名思义,…

ssm框架-springboot学习笔记

1.快速入门 在pom文件中将父工程文件配置成一个springboot文件,就可以将整个项目转换为springboot文件了 然后导入一个启动器依赖就可以直接启动一个springboot项目了 springboot启动器的类和固定写法 添加一个这样的注解就表示这是一个启动类, 代码…

YOLOv10-1.1部分代码阅读笔记-dataset.py

dataset.py ultralytics\data\dataset.py 目录 dataset.py 1.所需的库和模块 2.class YOLODataset(BaseDataset): 3.class ClassificationDataset(torchvision.datasets.ImageFolder): 4.def load_dataset_cache_file(path): 5.def save_dataset_cache_file(prefix,…