Apifox 入参加号被解析为空格?1 分钟解决 URL 编码问题
概述
在使用 Apifox 进行 API 测试时,很多同学会遇到一个诡异问题:当 Query 参数(如手机号、验证码、带特殊符号的字符串)中包含 “+” 时,发送请求后服务器接收到的 “+” 会被自动解析为空格,导致参数校验失败(比如 “13800138+000” 变成 “13800138 000”)。
这并非 Apifox 的 “bug”,而是源于 URL 编码的行业规范:在 HTTP 协议中,“+” 符号在 Query 参数里有特殊含义 —— 默认代表 “空格”(这是早期表单提交时的编码约定,延续至今)。Apifox 作为标准化的接口测试工具,会自动对 Query 参数进行 URL 编码,此时 “+” 会被编码为代表空格的 %20,最终导致服务器解析异常。
核心解决方案:手动替换 “+” 为 URL 编码值 “%2B”
既然 “+” 的默认编码会引发问题,只需绕过默认规则 —— 将参数中的 “+” 手动替换为它的 标准 URL 编码值 “%2B”,即可让服务器正确识别为 “+” 符号。
操作步骤(全程 1 分钟,无需修改工具配置)
1. 定位含 “+” 的 Query 参数:
在 Apifox 的接口编辑页,找到 “参数”→“Query 参数” 列表,确认需要包含 “+” 的参数(如 phone、verifyCode 等)。
2. 替换 “+” 为 “%2B”:
直接在参数值中修改,例如:
原参数值:13800138+000 → 改为 13800138%2B000;
原参数值:abc+123 → 改为 abc%2B123。
3. 发送请求验证结果:
点击 “发送” 按钮,通过 Apifox 的 “请求详情”→“原始请求” 查看编码后的 URL,确认 “%2B” 未被二次修改(示例原始 URL:https://api.example.com/user?phone=13800138%2B000);
同时查看服务器返回的响应,若参数解析正确(如手机号识别为 “13800138+000”),则问题解决。
示例对比:修改前后的参数变化
场景 | Apifox 中输入的参数值 | 实际发送到服务器的编码值 | 服务器最终解析结果 |
---|---|---|---|
未处理(默认编码) | 13800138+000 | 13800138%20000 | 13800138 000(错误) |
手动替换为 “%2B” | 13800138%2B000 | 13800138%2B000 | 13800138+000(正确) |