URL编码Postman变量?

URL encode Postman variable?

我使用Postman进行REST API测试和带有全局变量的参数测试。

我应该在GET请求中输入一个电话号码:/path/get?phone={{phone}},但电话号码中的前导+标志被解释为空格。

Postman中URL编码全局变量的语法是什么?是否可以在URL中的变量上运行JS encodeURIComponent()


为此使用Pre-request scripts(在body旁边):

1
var encoded = encodeURIComponent({{phone number}});

1
var encoded = encodeURIComponent(pm.environment.get("phone number"));

然后使用:

1
pm.environment.set("encoded phone number", encoded);

并将您的URL设置为/path/get?phone={{encoded phone number}}


我迟到了,但还是值得的:

只需突出显示并右键单击要编码的网址部分即可。选择encodeURIComponent

就是这样。

enter image description here


诀窍是在请求前脚本中获取环境变量,然后在对其进行编码后对其进行设置

1
2
    var encoded = encodeURIComponent(pm.environment.get("phone"));
    pm.environment.set("encoded phone number", encoded);

这只是Mohhamad Hasham'答案的捷径。

您可以直接在"参数值"字段中进行编码和解码:
enter image description here


我遇到了这个问题,希望找到类似问题的答案。对我来说,变量是一个JSON对象。我需要命中的端点希望将对象列表作为查询参数,而我无法将其更改为请求正文。

尽管有一些答案有所帮助,但我最终提出了一个综合解决方案。另外,由于Postman多年来更新了他们的API,因此其他答案中给出的某些代码已过时,因此它使用适用于7.22.1的方法。

1
2
3
pm.environment.set("basicJSON", '[{"key1":"value1","key2":"value2"},{"key1":"value1","key2":"value2"}]')
var encoded = encodedURIComponent(pm.environment.get("basicJSON"))
pm.environment.set("encodedJSON", encoded)

此解决方案要求basicJSONencodedJSON都作为环境变量存在。但是对我来说重要的是易于编辑对象。我不想不断解码/编码来更改值,也不想打开环境变量对话框。另外,注意对象周围的单引号也很重要。排除它们或使用双引号会导致Postman发送类似"[object Object]"的东西,这对于期望实际JSON的终结点没有用。


我在查询参数中使用括号{}有类似的问题。
通过关闭以下设置,它开始为我工作。

enter image description here


单击"参数"按钮以打开URL参数的数据编辑器。添加键值对时,Postman会将上面查询字符串中的所有内容组合在一起。如果您的URL已经有参数-例如,如果您要粘贴其他来源的URL。邮递员会自动将URL分成几对。
https://www.getpostman.com/docs/v6/postman/sending_api_requests/requests