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)

此解决方案要求basicJSONencodedJSON 作为环境变量存在。但对我来说重要的是易于编辑对象。我不想必须不断地解码/编码来改变值,也不想打开环境变量对话框。此外,注意对象周围的单引号也很重要。排除它们或使用双引号会导致 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编码邮递员变量?的主要内容,如果未能解决你的问题,请参考以下文章

易语言汉字转utf8编码

UriComponentsBuilder和UriComponents url编码

我应该对 POST 数据进行 URL 编码吗?

在 bash 脚本中对字符串进行 URL 编码

怎样用jquery编码和解码url

[ 编码 ] URL编码-URL中有中文 怎么办?