










Content-Type 是 HTTP 请求 / 响应头中核心的字段,用来告诉服务端 / 客户端「传输的数据是什么格式」,不同取值对应完全不同的解析方式。
我会用通俗易懂的方式讲解开发中最常用的 4 种 Content-Type,以及它们的核心区别和使用场景。
| Content-Type 类型 | 中文说明 | 数据格式 | 核心使用场景 |
|---|---|---|---|
application/x-www-form-urlencoded |
表单默认编码 | 键值对(key1=value1&key2=value2) | 普通表单提交、@RequestParam 接收参数 |
multipart/form-data |
多部分表单数据 | 分段传输(含文件 + 普通字段) | 上传文件(图片 / 文档)+ 普通参数 |
application/json |
JSON 格式 | 标准 JSON 字符串 | 前后端分离接口(RESTful)、@RequestBody 接收 |
text/plain |
纯文本 | 无格式纯字符串 | 简单文本传输(极少用在业务接口) |
key1=value1&key2=value2 的字符串,且自动编码特殊字符(比如空格转 +、中文转 URL 编码)。username=admin&password=123456&age=20@RequestParam(对应你之前的登录接口)。<form> 标签不加 enctype 时的默认值。------WebKitFormBoundaryxxx),区分不同参数:
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="username"
admin
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="avatar"; filename="head.jpg"
Content-Type: image/jpeg
[文件二进制数据]
------WebKitFormBoundary7MA4YWxkTrZu0gW--
@RequestParam,文件用 @RequestPart("avatar") MultipartFile file。x-www-form-urlencoded 大(因为有分隔符)。{"username":"admin","password":"123456","roles":["admin","user"]}@RequestBody + 实体类(比如 @RequestBody LoginDTO loginDTO)。x-www-form-urlencoded 只能传扁平键值对;@RequestParam 接收(会解析失败)。admin,123456(无键值对,纯文本)。application/x-www-form-urlencoded + @RequestParam;multipart/form-data + @RequestParam/@RequestPart;application/json + @RequestBody;application/json,服务端用 @RequestParam 接收,必然报解析错误(这是新手最常见的坑)。| 类型 | Postman 操作 |
|---|---|
| x-www-form-urlencoded | Body → 选择 x-www-form-urlencoded → 填键值对 |
| multipart/form-data | Body → 选择 form-data → 填普通字段 + 文件 |
| application/json | Body → 选择 raw → 格式选 JSON → 写 JSON 字符串 |
| text/plain | Body → 选择 raw → 格式选 Text → 写纯文本 |
x-www-form-urlencoded 是表单默认格式,适合简单键值对,用 @RequestParam 接收;multipart/form-data 是文件上传专用,支持混合传参;application/json 是前后端分离主流,支持复杂结构,用 @RequestBody 接收;text/plain 无结构化,极少用在业务接口中。核心避坑点:前端传什么 Content-Type,服务端就要用对应的接收方式,比如 JSON 格式不能用 @RequestParam,表单格式不能用 @RequestBody
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。