Postman默认不支持数组参数自动合并,可靠方式是前端将数组转为逗号分隔字符串(如ids=1,2,3),Gin后端用c.Query("ids")获取后经strings.Split和strconv.ParseInt安全解析,并需严格处理空格、空字段及错误。

Postman 中 URL 查询参数传数组:默认不支持,必须手动拼接
Postman 本身不识别 ids[]=1&ids[]=2&ids[]=3 这类重复键名的数组格式(尽管部分后端如 PHP、Spring Boot 默认能解析),Gin、Express、FastAPI 等主流框架默认也**不会自动合并同名 key 的多个值为数组**,除非显式配置。所以直接在 Params 栏里填多行同名参数,很可能只取最后一个值。
真正可靠的做法是前端(即 Postman)主动把数组转成字符串,再作为单个参数传过去。常见且服务端兼容性最好的方式就是逗号分隔:
- URL 中写成:
/api/users?ids=1,2,3,5 - 对应 Gin 后端用
c.Query("ids")拿到字符串,再strings.Split(..., ",")解析 - 避免空格、中文逗号、换行符混入——Postman 不会帮你 trim 或标准化
Gin 后端接收 ids=1,2,3 并安全转为整数切片
直接 strings.Split(c.Query("ids"), ",") 得到的是字符串切片,必须逐个校验并转换,否则遇到非数字或空字符串会 panic。别跳过错误处理:
idsStr := c.Query("ids")
if idsStr == "" {
c.JSON(400, gin.H{"error": "missing ids"})
return
}
idStrs := strings.Split(idsStr, ",")
var ids []int64
for _, s := range idStrs {
s = strings.TrimSpace(s)
if s == "" {
continue // 跳过空段,比如 "1,,3" 中间的空项
}
id, err := strconv.ParseInt(s, 10, 64)
if err != nil {
c.JSON(400, gin.H{"error": "invalid id format", "value": s})
return
}
ids = append(ids, id)
}
- 注意
strings.TrimSpace:Postman 参数里如果手误带了空格(如1, 2, 3),不 trim 就会解析失败 - 空字符串项(
"1,,3")会导致ParseInt("", ...)panic,必须提前过滤 - 别用
strconv.Atoi——它对超大整数(如雪花 ID)会溢出,优先用ParseInt(s, 10, 64)
Pre-request Script 动态生成逗号串:适合从环境变量/全局变量构造
如果你的数组来自环境变量(比如 env.ids 是 JSON 字符串 [1,2,3]),不能直接塞进 URL 参数栏,得靠脚本预处理:
Postman 12.27.7 Windows x64 官方安装包,适用于 API 设计、调试、测试与协作。该系列包含 Enterprise 云端性能测试静态 IP 出口能力,以及接口规范标签管理改进,适合受限网络测试与规范资源组织场景。
const ids = pm.environment.get("ids");
if (ids) {
try {
const idArray = JSON.parse(ids);
const idStr = idArray.join(",");
pm.environment.set("ids_comma", idStr);
} catch (e) {
console.error("Failed to parse ids env:", e);
}
}
然后在 URL 的 Params 里写:ids → 值填 {{ids_comma}}
- 必须用
JSON.parse,不能假设env.ids是数组对象——Postman 环境变量只存字符串 - 不要在 Tests 里做这事:Tests 是响应后执行,URL 已发出,改晚了
- 如果数组来自 CSV/JSON 数据文件,变量本身就是字符串(如
{{ids}}值是"1,2,3"),就不用再 join,直接引用即可
CSV 参数化时数组字段怎么写:一行一请求,字段值就是逗号串
当你用 CSV 做数据驱动,某列要表示“用户 ID 列表”,**不要**在 CSV 里写多行或嵌套结构(CSV 不支持)。正确做法是把整个数组压成一个字段值:
user_id_list,page "1,2,5,9",1 "100,200",2 "3",3
然后在请求 URL 中写:/api/batch?ids={{user_id_list}}&page={{page}}
- CSV 中该字段**必须加英文双引号包裹**,否则含逗号时会被误判为新列
- Postman 读取后
{{user_id_list}}的值就是字符串"1,2,5,9",和手输效果一致 - 别试图在 CSV 里写
[1,2,5,9]或 JSON 格式——后端收到的是原始字符串,不是自动解析的数组
实际用的时候,最易忽略的是空格和空字段的清洗。哪怕只是参数里多敲了一个空格,Gin 解析时就可能卡在 strconv.ParseInt(" 123", ...) 失败。与其让后端扛所有容错,不如在 Postman 发出前就确保 {{xxx}} 展开后是干净的逗号串。










