【问题标题】:Encoding variables using Postman使用 Postman 编码变量
【发布时间】:2017-10-06 06:03:07
【问题描述】:

是否可以使用 Postman 本身对变量进行编码?

例如:

{
  "UserName": "Admin0011@test.com",
  "Password": "test@123",
  "ConfirmPassword": "test@123",
  "Role": "SuperAdmin"
}

是否可以使用 Postman 本身对密码字段进行编码并将其发送到服务器?我在正文/标题部分中传递了上述 JSON 数据。

是否可以在 Postman 内部做这样的事情

base64UrlEncode(Password) 

【问题讨论】:

  • 编码是什么意思?
  • @Beginner 我修改了问题。请看一下
  • 不,这在邮递员中是不可能的
  • 我认为使用 Postman Pre-request Scripts 可能是可能的。我不确定

标签: json encoding postman


【解决方案1】:

可以使用 Postman Pre-request ScriptsPostman Environment Variables

第一步是设置要编码的变量。

接下来,编写一个脚本。 Postman 内置了 CryptoJs,可用于对字符串进行编码。这是一个对字符串进行 Base64 编码并将环境变量设置为编码值的示例脚本:

var plainText = pm.environment.get('plainTextString');
var encoded = CryptoJS.enc.Base64.stringify(plainText);

console.log(`Encoded value: ${encoded}`) //if you want to see the value in the console
pm.environment.set("myEncodedRequestVariable", encoded);

最后,使用以下语法在请求正文(或标头)中使用编码变量:

{{myEncodedRequestVariable}} 

【讨论】:

  • 我在让 CryptoJS 使用上述示例代码对字符串进行编码时遇到问题。 stackoverflow.com/questions/48524452/… 的答案帮助我弄清楚首​​先使用 CryptoJS.enc.Utf8.parse(string); 将我的字符串转换为 Utf8 或其他内容,然后将其传递给 Base64.stringify。
  • 拒绝投票,因为这不是加密,因此这个答案可能会导致人们做出危险和错误的假设,即编码 == 加密。
  • @P.Roe 问题与加密无关。
  • @MichaelSync 使用“加密”变量名可能会使用户感到困惑。您没有使用 base64 进行安全加密……P. Roe 想说的。
  • 好点,编码!=与变量名相关的加密。我已经相应地更新了答案。
【解决方案2】:

这是我如何处理连接到 appigee ouath 的密钥/秘密编码

let keys = pm.environment.get("key") + ":" + pm.environment.get("secret");
let encodedKeys = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(keys));

pm.environment.set("encodedKeys", encodedKeys);

使用当前接受的答案所建议的 stringify,我得到一个奇怪的错误,指出 r.clamp 不是一个函数。为了解决这个问题,我必须先解析密钥。

【讨论】:

  • 同意,这应该是正确答案。
【解决方案3】:

根据Change request body in pre-request script,除非您使用变量,否则您无法在邮递员中更改请求正文。

如果要使用 Base64 编码/解码。

最简单的方法是使用 JavaScript 方法 btoa, atob

以下是根据您的请求采取以下 JSON 的步骤

{
  "UserName": "Admin0011@test.com",
  "Password": "{{base64EncodedPassword}}",
  "ConfirmPassword": "{{base64EncodedPassword}}",
  "Role": "SuperAdmin"
}
  1. 首先在邮递员环境中定义environment variable,称为密码(假设您只想加密密码)。确保您设置了未加密的密码值。
  2. 定义名为base64EncodedPassword 的第二个环境变量。将其值留空。
  3. 然后您可以在Postman Pre-request script 选项卡中使用以下代码。
pm.environment.set("base64EncodedPassword", btoa(pm.environment.get("password")));

【讨论】:

  • btoa 有不同的用途。这里的问题是关于 encodeURIComponent() 在 javascipt 中所做的 url 编码
猜你喜欢
  • 2019-01-27
  • 2020-02-07
  • 1970-01-01
  • 2018-12-11
  • 1970-01-01
  • 2017-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多