发布于2026-07-22 阅读(0)
扫一扫,手机访问
在接口开发中,请求体格式的选择直接影响数据传输的效率和正确性。Postman 作为主流的接口调试工具,提供了 Form Data、x-www-form-urlencoded、Raw、Binary 四种常用请求体格式。本文将详细解析这四种格式的区别,重点对比 Form Data 与 x-www-form-urlencoded,并结合 Spring Boot 示例说明如何正确接收参数。
Postman 的 Body 选项中,四种格式的设计初衷和适用场景差异显著,具体如下:
本质:通过“分隔符(boundary)”分割多个键值对的复合格式,支持文本和二进制数据(如文件)。
核心特点:
请求体示例(简化版):
--Boundary123456 // 分隔符(自动生成) Content-Disposition: form-data; name="username" // 文本字段名 张三 // 字段值(中文无需编码) --Boundary123456 Content-Disposition: form-data; name="a vatar"; filename="head.jpg" // 文件字段 Content-Type: image/jpeg // 文件类型 [二进制文件内容] // 直接传输文件字节 --Boundary123456-- // 结束符
本质:将键值对拼接为字符串(如 key1=value1&key2=value2),并对非 ASCII 字符进行 URL 编码。
核心特点:
请求体示例:
username=%E5%BC%A0%E4%B8%89&age=20 // "张三"被URL编码为%E5%BC%A0%E4%B8%89
本质:纯文本格式,支持 JSON、XML、HTML 等结构化数据,需手动指定 Content-Type。
核心特点:
Content-Type(例如:选 JSON 则自动添加 application/json 头)。常见场景:后端接口要求接收 JSON 格式的用户信息(如 {"name":"张三","age":20})。
本质:二进制数据流,对应 Content-Type: application/octet-stream。
核心特点:
虽然两者都以键值对形式传输数据,但在编码方式、支持类型、适用场景上有本质区别,具体对比如下:
| 对比维度 | Form Data(multipart/form-data) | x-www-form-urlencoded |
|---|---|---|
| 编码方式 | 用分隔符分割多个字段,每个字段独立成块 | 所有字段拼接为单一字符串,URL编码 |
| 支持数据类型 | 文本 + 二进制文件(如图片、文档) | 仅支持文本(无法传输文件) |
| 非ASCII字符处理 | 直接传输原始字节(无需编码) | 强制URL编码(如中文→%E5%BC%A0…) |
| 数据体积 | 较大(含分隔符和元信息) | 较小(纯字符串) |
| 适用场景 | 上传文件、混合文本与二进制数据 | 简单表单提交(登录、搜索、参数提交) |
| Spring Boot接收差异 | 支持 MultipartFile 接收文件 | 仅支持文本参数,无法接收文件 |
一句话总结:如果需要传文件,必须用 Form Data;如果只是简单文本提交,x-www-form-urlencoded 更轻量。
步骤:Body → 选择 form-data → 点击“+”添加键值对。
username: 张三)。a vatar: head.jpg)。注意:Postman 会自动添加 Content-Type: multipart/form-data 及分隔符,无需手动设置。
步骤:Body → 选择 x-www-form-urlencoded → 直接添加键值对(如 name: 张三、age: 20)。
注意:Postman 会自动对非 ASCII 字符编码(如“张三”→%E5%BC%A0%E4%B8%89),并设置 Content-Type: application/x-www-form-urlencoded。
步骤:Body → 选择 raw → 右侧下拉框选格式(如 JSON)→ 输入对应格式内容(如 {"name":"张三","age":20})。
注意:格式需与内容匹配(如选 JSON 就必须输入合法 JSON 字符串)。
步骤:Body → 选择 binary → 点击“Select File”选择单个二进制文件(如 test.zip)。
注意:一次只能传一个文件,无键名,仅传输文件字节流。
适用于文本+文件混合传输,用 @RequestParam 接收文本,MultipartFile 接收文件。
@RestController
public class FormDataController {
// 接收文本+文件
@PostMapping("/upload")
public String handleFormData(
@RequestParam("username") String username, // 文本参数
@RequestParam("a vatar") MultipartFile a vatar // 文件参数
) {
String filename = a vatar.getOriginalFilename(); // 获取文件名
long fileSize = a vatar.getSize(); // 获取文件大小
return "收到用户:" + username + ",上传文件:" + filename + "(大小:" + fileSize + "字节)";
}
}
适用于纯文本键值对,直接用 @RequestParam 接收(与 Form Data 的文本参数接收方式一致)。
@RestController
public class UrlEncodedController {
@PostMapping("/submit")
public String handleUrlEncoded(
@RequestParam("name") String name, // 接收文本参数
@RequestParam("age") Integer age // 自动转换类型
) {
return "收到用户:" + name + ",年龄:" + age;
}
}
适用于结构化数据(如 JSON、XML),用 @RequestBody 绑定到对象或字符串。
// 定义接收JSON的实体类
public class User {
private String name;
private Integer age;
// 必须提供getter和setter(Spring通过反射赋值)
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public Integer getAge() { return age; }
public void setAge(Integer age) { this.age = age; }
}
@RestController
public class RawController {
// 接收JSON并自动绑定到User对象
@PostMapping("/user")
public String handleJson(@RequestBody User user) {
return "用户信息:姓名=" + user.getName() + ",年龄=" + user.getAge();
}
// 直接接收原始XML文本
@PostMapping("/xml")
public String handleXml(@RequestBody String xml) {
return "收到XML内容:" + xml;
}
}
适用于单个二进制文件,用 MultipartFile 接收(与 Form Data 的文件接收方式相同)。
@RestController
public class BinaryController {
@PostMapping("/upload-file")
public String handleBinary(@RequestParam("file") MultipartFile file) {
return "收到二进制文件:" + file.getOriginalFilename()
+ ",类型:" + file.getContentType();
}
}
| 请求体格式 | 适用场景 | 核心特点 | Spring Boot 接收方式 |
|---|---|---|---|
| Form Data | 文本+文件混合传输 | 支持二进制,分隔符分隔 | @RequestParam(文本)+ MultipartFile(文件) |
| x-www-form-urlencoded | 纯文本表单提交 | URL编码,仅支持文本 | @RequestParam |
| Raw | 结构化数据(JSON/XML等) | 纯文本,需指定格式 | @RequestBody(绑定对象或字符串) |
| Binary | 单个二进制文件 | 无键值对,原始字节流 | MultipartFile |
掌握这四种格式的差异,尤其是 Form Data 与 x-www-form-urlencoded 的区别,能帮助我们在前后端联调中快速选择合适的传输方式,避免“传文件失败”“参数乱码”等常见问题。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8