必须用form-data当接口要求multipart/form-data或需同时传文本字段和文件;它用boundary分隔字段,支持混传、多文件及自定义字段名。

form-data 什么时候必须用
当接口明确要求 multipart/form-data,或者你同时要传文本字段 + 文件(比如头像上传带 username 和 avatar 文件),就必须选 form-data。它底层靠 boundary 分隔不同字段,所以能混传、能多文件、字段名可自定义。
常见错误现象:400 Bad Request 或后端收不到文件 —— 很可能是你把文件拖进 x-www-form-urlencoded 里了,那个选项根本不支持文件输入框;或者你在 form-data 里给文件字段填了字符串值(应点右侧下拉选 File)。
- 文本字段直接输 key/value,类型默认是
Text - 文件字段必须点 value 栏右侧下拉,选
File,再点击上传 - 不要手动设置
Content-Type请求头 —— Postman 会自动生成带boundary的正确 header - 如果后端用 Spring Boot,对应接收方法参数得是
@RequestParam MultipartFile file,不是@RequestBody
x-www-form-urlencoded 适合什么场景
纯键值对提交,且后端接收逻辑走传统表单解析(比如 PHP 的 $_POST、Java 的 request.getParameter()、或 Spring 的 @RequestParam 字符串参数)。它等价于浏览器原生 提交。
典型错误:415 Unsupported Media Type —— 后端期望 application/json 却收到 application/x-www-form-urlencoded;或者你误把 JSON 字符串(如 {"a":1})粘贴进 x-www-form-urlencoded 的 value 里,导致后端解析出错。
- 所有字段都是
Text类型,没有File选项 - 数据会被 URL 编码,空格变
%20,中文变%E4%BD%A0等 - 不能传嵌套结构(如数组、对象),只能扁平 key-value
- 若后端是 RESTful 风格并要求 JSON,别用这个
raw 传 JSON 为什么经常 400
因为 raw 只是内容载体,不自动设 header。如果你选了 raw → JSON,但没确保请求头含 Content-Type: application/json,后端(尤其 Spring Boot)会拒绝解析,返回 400 或空 body。
Postman 12.27.7 Windows x64 官方安装包,适用于 API 设计、调试、测试与协作。该系列包含 Enterprise 云端性能测试静态 IP 出口能力,以及接口规范标签管理改进,适合受限网络测试与规范资源组织场景。
另一个高频坑:JSON 格式非法。Postman 的 JSON 模式会高亮语法,但不会拦截发送。少个逗号、多末尾逗号、单引号代替双引号,都可能让后端 JsonMappingException。
- 务必确认右上角下拉菜单选的是
JSON,不是Text或XML - 检查预发请求的 Headers 面板,
Content-Type必须是application/json - 粘贴 JSON 后看左下角是否有红色波浪线 —— 有说明格式错误
- 后端用
@RequestBody接收,不是@RequestParam
binary 是真·单文件通道
binary 对应 Content-Type: application/octet-stream,没有字段名、没有 boundary、没有键值对。它就是把整个文件字节流原样塞进请求体 —— 所以后端接收时必须按流读取(比如 Java 的 InputStream),没法按名字取字段。
适用面极窄:一般只用于上传单个二进制资源(如固件升级包、加密密钥文件),且后端明确文档写“接收 raw binary stream”。日常开发中几乎不用,form-data 更灵活也更通用。
- 只能选一个文件,没地方填 key 名
- Postman 不会加任何额外包装,连换行都不加
- 别指望后端用
MultipartFile或@RequestParam接 —— 它根本没字段概念 - 调试时可用
curl --data-binary @file.bin对比验证
实际选型时最容易被忽略的点:不是看“我想传什么”,而是看“后端代码怎么写的”。翻一眼 Controller 方法签名或 Swagger 文档里的 consumes 值,比凭感觉试四种格式快十倍。










