URL编码邮递员变量?
Posted
技术标签:
【中文标题】URL编码邮递员变量?【英文标题】:URL encode Postman variable? 【发布时间】:2017-09-22 12:02:02 【问题描述】:我使用 Postman 进行 REST API 测试并使用全局变量对测试进行参数化。
我应该在 GET 请求中输入电话号码:/path/get?phone=phone
,但在电话号码中以+
开头的符号被解释为空格。
在 Postman 中对全局变量进行 URL 编码的语法是什么?是否可以在 URL 中的变量上运行 JS encodeURIComponent()
?
【问题讨论】:
我打开an issue to postman在路径参数设置中添加了一个标志 【参考方案1】:为此使用Pre-request scripts
(在body
旁边):
var encoded = encodeURIComponent(phone number);
或
var encoded = encodeURIComponent(pm.environment.get("phone number"));
要继续,请使用:
pm.environment.set("encoded phone number", encoded);
并将您的网址设置为/path/get?phone=encoded phone number
【讨论】:
这不会影响剩余的请求,会不会损坏 我不明白这个问题 这不是我期望的结果。有没有办法查看“编码电话号码”的值?谢谢【参考方案2】:诀窍是在预请求脚本中获取你的环境变量,然后在编码后设置它
var encoded = encodeURIComponent(pm.environment.get("phone"));
pm.environment.set("encoded phone number", encoded);
【讨论】:
【参考方案3】:单击“参数”按钮打开 URL 参数的数据编辑器。当您添加键值对时,Postman 会组合上面查询字符串中的所有内容。如果您的 URL 已经有参数 - 例如,如果您要粘贴来自其他来源的 URL。 Postman 会自动将 URL 拆分成对。 https://www.getpostman.com/docs/v6/postman/sending_api_requests/requests
【讨论】:
这没有回答问题。这些文档描述了如何添加 urlencoded 表单参数,而问题是关于从环境变量设置的 urlencoding GET 参数。【参考方案4】:我迟到了,但仍然值得:
只需突出显示并右键单击要编码的 url 部分。选择encodeURIComponent
就是这样。
【讨论】:
这是最好的办法。 轻松最好的方法 问题是关于变量的,也就是像 defined_someplace_else 这样的东西。你不能像那样对它们进行编码,因为需要对变量内部的值进行编码,而不是对变量引用进行编码。 这是静态参数的最佳方式。如果您在该位置的变量上尝试它,它会编码将其标识为变量的大括号,而不是变量的内容。不回答问题(但对找到此答案的许多人仍然有帮助)。【参考方案5】:我在寻找类似问题的答案时遇到了这个问题。对我来说,该变量是一个 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 的端点是无用的。
【讨论】:
【参考方案6】:只是 Mohhamad Hasham 回答的捷径。
您可以直接在 Params Value 字段中进行编码和解码:
【讨论】:
它没有回答从变量引用 var
编码内容的问题。对静态文本进行编码没有问题。
@gavenkoa 你是对的 - 我被帮助我的流行答案误导了。【参考方案7】:
查询参数中的大括号 和
有类似的问题。
通过关闭以下设置,它开始为我工作。
【讨论】:
【参考方案8】:这也可以:
var encoded = encodeURIComponent(pm.request.url.query.get("phone"));
pm.request.url.query.remove("phone");
pm.request.url.query.insert("phone", encoded);
【讨论】:
以上是关于URL编码邮递员变量?的主要内容,如果未能解决你的问题,请参考以下文章