1. 问题描述
使用ApiFox进行API测试时 , 加号发送至服务器时被错误解析为空格 ,如下图
1.1 请求参数
1.2 debug参数
debug 到入参这里 , 肉眼可见 , 入参的加号被转为空格了
2.问题原因
在使用ApiFox进行API测试时,如果遇到特定的请求参数(如包含加号+等特殊字符)在发送至服务器时被错误解析或过滤的问题,通常这不是ApiFox特意进行的过滤,而是URL编码的默认行为。加号在URL中会被视为一个空格,因此在发送请求前,它们会被自动编码为%20。
ApiFox的设置中并没有直接的选项来禁用URL参数的自动编码。这是因为URL编码是HTTP协议的一部分,而非ApiFox特有的功能。
2.3 问题解决方案
2.3.1 手动将 入参的 加号 改为 %2B
例如
Swq3FIxDYpv80MY74j4DQ4G6gCM22haO+Vavu+msys4=
改为
Swq3FIxDYpv80MY74j4DQ4G6gCM22haO%2BVavu%2Bmsys4=
2.3.2 在ApiFox种编写请求参数前置操作脚本
脚本如下
// 获取所有的查询参数
const params = pm.request.url.query.all();
// 遍历所有查询参数
params.forEach(param => {
// 检查参数值是否包含 +
if (param.value.includes('+')) {
// 替换 + 为 %2B
param.value = param.value.replace(/\+/g, '%2B');
}
});
// 更新URL以反映更改
pm.request.url.query = params;