Postman 严格依据服务器返回的 Content-Type 响应头识别并渲染响应,不进行类型猜测;若头缺失、错误或值不被识别(如 application/vnd.api+json),Pretty 视图无法自动格式化 JSON,需通过 Headers 标签页确认其值,或手动强制 JSON 格式化。

Postman 怎么识别响应的 Content-Type
Postman 不会“猜测”响应类型,它严格依赖服务器返回的 Content-Type 响应头来决定如何渲染 Body。如果头缺失、拼写错误(比如 content-type 小写但值不标准),或值不被识别(如 application/vnd.api+json),Pretty 视图就无法自动格式化 JSON。
你可以在响应区域顶部的 Headers 标签页里直接看到这行:Content-Type: application/json; charset=utf-8。鼠标悬停在 Content-Type 上,Postman 会显示 RFC 规范说明——这是最权威的依据,别信“看起来像 JSON 就该格式化”这种直觉。
- 常见错误现象:响应明明是合法 JSON,却在 Pretty 视图里显示为一团乱码或单行文本
- 根本原因:服务端没返回
Content-Type,或返回了text/plain、application/octet-stream等非结构化类型 - 临时解决:切换到 Raw 视图,用
Ctrl+F搜{或"data"确认内容确实是 JSON
强制用 JSON 格式化响应体的三种方式
当 Content-Type 不可靠时,手动干预比反复改接口更高效。Postman 提供了三处可触发强制格式化的入口,适用场景不同:
- 单次响应:点击 Body 区域右上角的「格式化下拉框」→ 选
JSON(仅对当前响应生效) - 当前请求默认:进 Settings → General → Language detection → 改为
JSON(影响所有新打开的请求,但不改变已保存的示例) - 全局兜底:在 Tests 脚本里加一行
pm.response.to.have.jsonBody();,虽然不改变视图,但能立刻暴露解析失败问题
注意:XML 和 HTML 同理,但不要对二进制响应(如 PDF、图片)强行选 JSON,会导致乱码甚至卡死。
Preview 视图为什么有时显示空白或报错
Preview 是沙盒 iframe 渲染,它本质是把响应体当 HTML 解析并执行。所以它只适合两类响应:
Postman Mac版是一款专为macOS设计的API开发与测试工具,凭借简洁的界面和强大的功能,深受开发者喜爱。它支持发送各种HTTP请求(GET、POST、PUT等),轻松管理接口集合、环境变量和模拟服务器。Mac用户可享受原生性能、快捷键优化及与系统无缝集成的体验,适用于接口调试、自动化测试和文档生成。无论是个人项目还是团队协作,Postman for Mac都能提升API开发效率,是ma
- 真实 HTML 页面(含
标签,且Content-Type是text/html) - 服务端返回的 HTML 错误页(比如 500 时 Django/Flask 默认返回的 traceback 页面)
容易踩的坑:
- 响应是 JSON 却切到 Preview:iframe 试图解析 JSON 为 HTML,结果白屏或报
Unexpected token { - 响应含内联 JS 或外部资源(如
<script src="xxx"></script>):沙盒策略禁止加载,脚本不执行,图片不显示 - 响应头带
X-Content-Type-Options: nosniff:浏览器(包括 Postman 内嵌引擎)将严格按Content-Type解析,拒绝 MIME 类型嗅探——这时 Preview 更容易失败
Raw 视图里怎么判断响应是否被压缩
Raw 是唯一能暴露原始字节的视图。如果响应体开头是乱码、出现 符号,或长度远小于预期(比如接口文档说返回 10KB JSON,Raw 显示才 2KB),大概率启用了 gzip/brotli 压缩。
验证方法:
- 看响应头是否有
Content-Encoding: gzip或br - 在 Raw 视图里按
Ctrl+A全选 →Ctrl+C复制 → 粘贴到在线工具(如 https://www.samltool.com/decode.php)选 “Gzip Decode” 尝试解压 - 若解压失败但头存在,可能是服务端压缩出错,或 Postman 未自动解压(极少见,多见于老旧版本)
真正棘手的情况是:服务端既没返回 Content-Encoding 头,又悄悄压缩了响应——这时 Raw 里全是不可读字符,而 Pretty 和 Preview 都完全失效。只能靠抓包(如 Wireshark)或换 cURL 加 -H "Accept-Encoding: identity" 绕过压缩来确认。
















