🔍搜索⌘K

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+00013800138%2000013800138 000(错误)
手动替换为 “%2B”13800138%2B00013800138%2B00013800138+000(正确)