Apifox 入参加号被解析为空格?1 分钟解决 URL 编码问题
概述
用 Apifox 测接口时,不少人踩过这么一个坑: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. 发送请求验证结果:
点「发送」之后,到「请求详情」→「原始请求」里看一眼编码后的 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(正确) |