请求体包含实际发送的数据,通常在 POST 和 PUT 请求中使用。请求体的格式取决于 Content-Type的设置。

  • application/x-www-form-urlencode
username=%E5%BC%A0%E4%B8%89&password=123+456

场景: 它只适合传输简单的文本数据,比如用户登录、注册、提交搜索表单等。它无法用于文件上传

  • multipart/form-data

场景文件上传是其唯一且最重要的应用场景

  • application/json 这是前后端分离架构下,RESTful API 通信的主流方式。

场景: 几乎所有的非文件上传的 API 请求(增、删、改、查)都推荐使用 application/json,因为它结构清晰、可读性强、易于扩展,且与现代前端框架(如 Vue, React)无缝对接。

特性 (Feature)application/x-www-form-urlencodedmultipart/form-dataapplication/json
编码方式Key-Value键值对,通过&分隔,所有内容都进行URL编码多部分(Multi-part)结构,由boundary分隔,每部分可有独立的Content-Type单个完整的JSON字符串
数据结构扁平的键值对复杂的、多部分的数据,可以是文本或文件复杂的、可嵌套的结构(对象、数组等)
主要用途绝大多数不带文件的HTML表单提交(如登录、搜索)文件上传,或混合了文件和文本的表单现代Web API的数据交换(前后端分离项目的事实标准)
二进制/文件不支持支持不支持(可通过Base64编码,但效率低)
可读性编码后可读性差结构清晰,但内容较多可读性非常好

reference

HTTP报文