URL编码Postman变量?

时间:2017-04-25 12:53:12

标签: postman

我使用Postman进行REST API测试,并使用全局变量对测试进行参数化。

我应该将电话号码放入GET请求中:/path/get?phone={{phone}}但是电话号码中的前导+符号会被解释为空格。

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

7 个答案:

答案 0 :(得分:25)

使用Pre-request scripts(它位于body旁边):

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

var encoded = postman.getEnvironmentVariable("phone number");

然后继续,使用:

postman.setEnvironmentVariable("encoded phone number", encoded);

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

答案 1 :(得分:5)

我来晚了,但仍然值得:

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

就是这样。

enter image description here

答案 2 :(得分:2)

诀窍是在预请求脚本中获取环境变量,然后在编码后设置它

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

答案 3 :(得分:1)

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

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

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的终结点没有用。

答案 4 :(得分:0)

这只是Mohhamad Hasham回答的捷径。

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

答案 5 :(得分:0)

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

enter image description here

答案 6 :(得分:-1)

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