URL编码 Postman 变量?

r8uurelv  于 2022-11-23  发布在  Postman
关注(0)|答案(9)|浏览(217)

我使用Postman进行REST API测试,并使用全局变量对测试进行参数化。
我应该在GET请求中输入一个电话号码:/path/get?phone={{phone}},但电话号码中的前导+符号被解释为空格。
Postman中URL编码全局变量的语法是什么?是否可以在URL中的变量上运行JS encodeURIComponent()

gz5pxeao

gz5pxeao1#

我迟到了,但还是值得的:
只需突出显示并右键单击要编码的url部分。选择encodeURIComponent
就这样了

5m1hhzi4

5m1hhzi42#

使用Pre-request scripts(它位于body旁边)执行以下操作:

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

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

要继续,请用途:

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

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

pes8fvy9

pes8fvy93#

这是穆罕默德·哈沙姆回答问题的捷径。
您可以直接在“参数值”字段中进行编码和解码:

ycggw6v2

ycggw6v24#

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

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

atmip9wb5#

我遇到这个问题是为了寻找一个类似问题的答案。对我来说,变量是一个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的端点是无用的。

xxhby3vn

xxhby3vn6#

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

t5fffqht

t5fffqht7#

这也可以:

var encoded = encodeURIComponent(pm.request.url.query.get("phone"));
pm.request.url.query.remove("phone");
pm.request.url.query.insert("phone", encoded);
tp5buhyn

tp5buhyn8#

单击“Params”按钮打开URL参数的数据编辑器。当您添加键-值对时,Postman将合并上面查询字符串中的所有内容。如果您的URL已经有参数-例如,如果您从其他源粘贴URL,Postman将自动将URL拆分为对。https://www.getpostman.com/docs/v6/postman/sending_api_requests/requests

eufgjt7s

eufgjt7s9#

POSTMAN关于building requests的文档中的“发送参数”一节在这里很有帮助。你可以通过简单地用冒号编码URL来编码路径数据,列出编码元素的键名,然后在查询参数下面会出现一个新的部分,允许你自定义值和添加描述,就像我们对查询参数所做的那样。下面是一个为GET请求编码URL的示例:

https://somesite-api-endpoint/:record/get

下面是添加路径数据后显示的内容。您在路径变量部分添加的任何值都会自动用您的数据更新URL。

相关问题