Params中含&需勾选Encode自动编码为%26,否则&被误作参数分隔符导致值截断;form-data和x-www-form-urlencoded自动编码,JSON中&无需处理。

Postman 里参数中出现 & 符号,不是要“特殊处理”,而是你很可能已经误用了传参位置——& 是 URL 查询字符串的分隔符,不是参数值的一部分;如果它出现在参数值里(比如用户名是 a&b),直接填进 Params 就会提前截断,导致后半段丢失。
Params 中填了带 & 的值,为什么请求发出去就变样了?
因为 Postman 的 Params 面板本质是帮你拼接查询字符串(?k1=v1&k2=v2)。当你在 Params 表格里输入:
- Key:
name - Value:
zhang&san
Postman 会原样拼成 ?name=zhang&san——注意,& 被当成了新参数的起始符,san 变成一个没 key 的“孤值”,服务端根本收不到完整值。
正确做法是:让 Postman 自动做 URL 编码。勾选 Params 表格右上角的 Encode 复选框(默认不勾),它就会把 & 转成 %26,最终发出 ?name=zhang%26san。
Postman 12.27.7 Windows x64 官方安装包,适用于 API 设计、调试、测试与协作。该系列包含 Enterprise 云端性能测试静态 IP 出口能力,以及接口规范标签管理改进,适合受限网络测试与规范资源组织场景。
POST 请求 Body 里传含 & 的字符串,要不要编码?
取决于 Body 类型:
-
form-data和x-www-form-urlencoded:Postman 会自动编码所有值,包括&、空格、中文等,你只管填原始值(如city=shang&hai),不用手动转义 -
raw+JSON:JSON 格式本身不依赖&,只要字符串写在双引号里("city": "shang&hai"),就完全合法,无需额外处理 -
raw+Text或自定义Content-Type:Postman 不干预内容,&就是纯字符,服务端怎么解析由你代码决定——但此时已不属于“参数传递”范畴,而是原始 payload
服务端收不到完整的带 & 参数,排查顺序是什么?
别急着改 Postman,先确认问题出在哪一层:
- 打开 Postman 的
Console(View → Show Postman Console),发一次请求,看左栏实际发出的 URL 或 Body 内容——这是最真实的一手信息 - 检查服务端日志或 debug 断点:是压根没收到该字段?还是收到但值被截断成前半段?前者说明 Postman 拼接失败或没发过去,后者大概率是 Params 没勾
Encode - 对比请求头:
GET请求必须靠 URL 传参,Content-Type对它无效;而POST如果用了x-www-form-urlencoded却手动写了Content-Type: application/json,服务端解析器会直接报错或忽略 Body
真正容易被忽略的点:Params 面板的 Encode 开关默认关闭,且没有视觉提示;很多人填完就点 Send,看到结果不对才回头翻文档。养成习惯——只要参数值里有 &、=、空格、中文,Params 下第一件事就是勾上它。










