Postman设置JSON请求体需三步:一、Body选raw并下拉选JSON(自动加Content-Type);二、确保JSON语法合法(双引号、无尾逗号);三、动态变量须用Pre-request Script注入并调用pm.request.body.update()。

Postman 怎么设置请求体为 JSON 格式
Postman 默认不自动识别 JSON,必须手动指定 Content-Type 为 application/json,否则后端大概率返回 400 或解析失败。光写对 JSON 字符串没用,Header 和 Body 类型必须匹配。
操作路径:选中请求 → 左侧 Body 标签 → 选 raw → 右侧下拉菜单选 JSON(不是 Text,也不是留空)。
- 选
raw后若下拉没显示JSON,说明 Postman 版本太旧,升级到 v10+ 即可 - 如果手动输
Content-Type: application/json在 Headers 里,但 Body 没选raw+JSON,Postman 仍可能忽略或覆盖该 Header - JSON 必须是合法格式:双引号、无尾逗号、字符串键名不能用单引号
Postman 发送带嵌套对象和数组的 JSON 示例
常见错误是把对象当字符串传,比如 "user": "{name: 'Alice'}" —— 这是字符串,不是对象。JSON Body 应直接写结构化数据。
{
"id": 123,
"user": {
"name": "Alice",
"roles": ["admin", "editor"]
},
"tags": ["v2", "prod"],
"active": true
}
注意:
-
null值要写成null(小写),不能写NULL或"null" - 时间字段推荐用 ISO 8601 字符串,如
"created_at": "2024-06-15T10:30:00Z",避免数字时间戳引发类型歧义 - 如果后端用 Spring Boot,默认会拒绝空字符串转为
null,但允许省略字段(取决于@JsonInclude配置)
为什么发 JSON 却收到 415 Unsupported Media Type
这是最典型的 Header 错误,不是 Body 写错了,而是服务端根本没收到正确的类型声明。
Postman 12.27.7 Windows x64 官方安装包,适用于 API 设计、调试、测试与协作。该系列包含 Enterprise 云端性能测试静态 IP 出口能力,以及接口规范标签管理改进,适合受限网络测试与规范资源组织场景。
- 检查 Headers 标签页里是否有多余的
Content-Type条目(比如既有自动加的,又有你手动加的),Postman 会取最后一个,容易冲突 - 某些代理或网关(如 Nginx)会过滤掉非标准 Content-Type,确认中间层没 strip 掉 header
- 如果用了 Pre-request Script 动态设 header,确保脚本执行成功且没抛错(可在 Console 查看)
- 用
curl对比验证:curl -X POST -H "Content-Type: application/json" -d '{"key":"val"}' http://localhost:3000/api,排除 Postman 自身问题
Postman 中怎么处理 JSON 里的变量(比如 token 或动态 ID)
不能直接在 raw JSON 里写 {{token}} —— Postman 不会解析模板。必须用 Pre-request Script 注入,或改用 form-data(不推荐)。
正确做法:启用 Variables(右上角眼睛图标),定义 auth_token;再在 Pre-request Script 里构造 JSON 并写入 pm.request.body.raw:
const jsonData = {
"user_id": pm.variables.get("user_id"),
"token": pm.variables.get("auth_token")
};
pm.request.body.update(JSON.stringify(jsonData));
关键点:
- 必须调用
pm.request.body.update(),仅改raw字段无效 - 变量值如果是数字/布尔,
JSON.stringify()会自动处理;但如果是未定义,会变成"undefined",需提前判断 - 这种写法绕过了 UI 的
raw + JSON模式,所以 Body 标签页会显示为text/plain,但实际发出的是合法 JSON
真正容易被忽略的是:Postman 的「JSON」下拉选项只是个便利开关,它只负责加 header 和语法高亮,不参与变量替换或运行时计算。所有动态逻辑必须进 Script。

















