You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postman中带时区+号的Datetime类型URL查询参数编码问题

解决Postman中GET请求查询参数+被替换为空格的问题

这个问题我之前调试接口的时候也踩过坑!核心原因是URL查询字符串的编码规则:在application/x-www-form-urlencoded格式里,+会被默认解析成空格,所以你的Express后端才会把+变成空格。下面给你三种实用的解决办法:

方法一:用Postman的Params标签自动编码(推荐)

这是最省事的方式,完全不用手动处理编码:

  • 打开Postman的请求编辑界面,切换到Params标签页
  • 在Key列输入start,Value列直接填入原始值2001-05-04T00:00:00+5:30
  • Postman会自动将+编码为URL安全的%2B,发送请求后后端就能正确接收到带+的参数了

方法二:手动编码参数值

如果习惯直接在URL栏写完整请求地址,可以把参数里的+替换成它的URL编码值%2B,修改后的URL如下:

/xyz/abc?start=2001-05-04T00:00:00%2B5:30

这样Express后端解析时,%2B会被还原成原始的+符号,不会再变成空格。

方法三:用Pre-request Script动态编码(适合复杂场景)

如果你的参数是动态生成的,比如从环境变量或其他地方获取,可以用Pre-request Script自动编码:

  1. 切换到请求的Pre-request Script标签页
  2. 输入以下代码:
// 定义原始参数值
const originalStart = "2001-05-04T00:00:00+5:30";
// 用encodeURIComponent编码特殊字符
const encodedStart = encodeURIComponent(originalStart);
// 将编码后的值存入环境变量
pm.environment.set("encoded_start", encodedStart);
  1. 在URL栏里引用这个环境变量:
/xyz/abc?start={{encoded_start}}

发送请求时,Postman会自动替换变量为编码后的字符串,确保参数正确传递。

补充说明

为什么会出现这个问题?因为HTTP协议中,application/x-www-form-urlencoded格式(GET请求默认用这个)规定,空格可以用+或%20表示,所以Express的默认解析器会把+转换成空格。只有当+被编码为%2B时,才会被识别为原本的加号符号。

内容的提问来源于stack exchange,提问作者Nikheel Dangariya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:11:51