我使用Postman进行REST API测试,并使用全局变量对测试进行参数化。
我应该将电话号码放入GET请求中:/path/get?phone={{phone}}
但是电话号码中的前导+
符号会被解释为空格。
Postman中URL编码全局变量的语法是什么?是否可以在URL中对变量运行JS encodeURIComponent()
?
答案 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)
答案 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)
此解决方案要求basicJSON
和encodedJSON
都作为环境变量存在。但是对我来说重要的是易于编辑对象。我不想不断解码/编码来更改值,也不想打开环境变量对话框。同样,注意对象周围的单引号也很重要。排除它们或使用双引号会导致Postman发送类似"[object Object]"
之类的消息,这对于期望实际JSON的终结点没有用。
答案 4 :(得分:0)
答案 5 :(得分:0)
答案 6 :(得分:-1)
单击Params按钮打开URL参数的数据编辑器。添加键值对时,Postman会将上面查询字符串中的所有内容组合在一起。如果您的网址已有参数 - 例如,如果您要粘贴其他来源的网址。邮递员自动将URL拆分成对。 https://www.getpostman.com/docs/v6/postman/sending_api_requests/requests