【问题标题】:URL encode Postman variable?URL编码邮递员变量?
【发布时间】:2017-09-22 12:02:02
【问题描述】:

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

我应该在 GET 请求中输入电话号码:/path/get?phone={{phone}},但在电话号码中以+ 开头的符号被解释为空格。

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

【问题讨论】:

标签: 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);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-01-09
          • 2019-12-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多