标签: postman-pre-request-script

如何从邮递员中的环境变量设置基本授权?

我想使用环境变量在 Postman 中设置基本授权。因为我对不同的 API 调用有不同的授权用户名和密码。

我根据以下设置我的邮递员:

在授权选项卡中:我
在标题选项卡中选择了无身份验证:键=Authorization值=Basic{{MyAuthorization}}
在正文选项卡中:

{
    "UserName": "{{UserName}}",
    "ServiceUrl": "{{ServiceUrl}}"
}

//which set it from the envitonment variable
Run Code Online (Sandbox Code Playgroud)

在预请求选项卡中:

// Require the crypto-js module
var CryptoJS = require("crypto-js");

// Parse the `username` and `password` environment variables
let credsParsed = CryptoJS.enc.Utf8.parse(`${pm.environment.get('admin')}:${pm.environment.get('admin')}`);

// Base64 encoded the parsed value
let credsEncoded = CryptoJS.enc.Base64.stringify(credsParsed);

// Set the valuse as an environment variable and use in the request
pm.environment.set('MyAuthorization', credsEncoded);
console.log(credsEncoded);
Run Code Online (Sandbox Code Playgroud)

在测试选项卡中:

var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("LoginInfoID", jsonData.First.LoginInfoID); …
Run Code Online (Sandbox Code Playgroud)

postman postman-pre-request-script

10
推荐指数
2
解决办法
8273
查看次数

邮递员脚本:如何解码令牌

我正在使用邮递员编写脚本。

  1. 首先,我执行检索oauth 令牌的请求。

  2. 然后,在“测试”选项卡中,我使用邮递员脚本来使用收到的令牌来设置全局(邮递员)变量。

此外,我想解码令牌,因为我想使用令牌内的信息将它们设置为变量。令牌有效负载是 base 64 url编码的。

我怎么做?

在此处输入图片说明

在此处输入图片说明

javascript postman postman-pre-request-script postman-testcase

9
推荐指数
1
解决办法
5276
查看次数

在 Postman 中多次使用不同的数据运行请求只运行一次

我是 Postman 的新手,遇到了一个我无法弄清楚的反复出现的问题。我试图使用在预请求脚本上建立的数据数组多次运行相同的请求,但是,当我去运行程序时,请求只运行一次,而不是 3 次。

预请求脚本:

var uuids = pm.environment.get(“uuids”);

if(!uuids) {
uuids= [“1eb253c6-8784”, “d3fb3ab3-4c57”, “d3fb3ab3-4c78”];
}

var currentuuid = uuids.shift();
pm.environment.set(“uuid”, currentuuid);
pm.environment.set(“uuids”, uuids);
Run Code Online (Sandbox Code Playgroud)

测试:

var uuids = pm.environment.get(“uuids”);

if (uuids && uuids.length>0) {
postman.setNextRequest(myurl/?userid={{uuid}});
} else {
postman.setNextRequest();
}
Run Code Online (Sandbox Code Playgroud)

我查看了有关文档,但找不到我的代码有什么问题。

谢谢!

postman postman-collection-runner postman-pre-request-script

9
推荐指数
1
解决办法
2万
查看次数

邮递员 sendRequest 使用集合中的授权

我可以在 Postman 预请求脚本中发送请求,如下所示。我想要做的是使用与集合中设置的相同的身份验证,这样如果集合发生更改,那么我的 sendRequest 就会遵循套件。

pm.sendRequest({
    url: 'http://some_url',
    method: 'GET',
    header: {
        'content-type': 'application/json',
        'authorization': 'Basic ' + auth
    },

}, function (err, res) {
    // do something
});
Run Code Online (Sandbox Code Playgroud)

我想这样做的原因是我想与合作伙伴和客户共享该集合,并且他们每个人都可能使用不同的身份验证类型。目前,我已将我的集合配置为使用基本身份验证,并使用了用户名和密码变量。例如,如果合作伙伴将集合切换为使用 OAuth,那么他们还需要更新我的所有预请求脚本以使用 OAuth。

如果 pm.sendRequest() 能够像集合中的每个请求一样继承身份验证,那么合作伙伴可以在一处进行更改。

postman postman-pre-request-script

8
推荐指数
1
解决办法
6557
查看次数

邮递员 - 无法在集合级别预请求脚本中运行 pm.sendRequest()

我在 travis 中构建后使用 newman 运行 api 测试。

我试图限制预请求脚本的重复,因此检查了一些关于如何在集合级别拥有预请求脚本的解决方法。

我的问题是我不想在每个请求上运行它们,而只想在我需要它们的地方运行它们。

示例:我尝试运行登录脚本以在专用端点上使用返回的令牌。

我的代码如下所示:

集合级别预请求脚本定义:

    Object.prototype.login = function() {
        const request = {
            url: 'somthing',
            method: 'GET',
            header: 'Content-Type:application/json',
            body: {
              mode: 'application/json',
              raw: JSON.stringify(
                {
                  email: pm.environment.get('someenv'),
                  password: pm.environment.get('someenv')
                })
            }
        };

        pm.sendRequest(request, function (err, res) {
            var response = res.json();
            pm.environment.set("token", response.token);
        });
    }
Run Code Online (Sandbox Code Playgroud)

请求级别预请求脚本定义:

    _.login();
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决为什么我不能在此范围内运行 pm.sendRequest 吗?

pm.environment.get('someenv')就像一个魅力,所以我不知道在这里做什么。

当从集合级别预请求脚本调用而不使用对象时,它运行良好,但如果我只是将整个请求放在那里,它将在我首先想要避免的每个请求之前运行。

我尝试使用 console.log() 记录一些内容,但似乎 pm.sendRequest() 中的回调从未运行。

postman postman-pre-request-script

8
推荐指数
1
解决办法
7294
查看次数

预请求 CryptoJS 脚本中出现“TypeError:无法读取未定义的属性‘sigBytes’”错误

使用 cryptojs 预请求脚本运行邮递员集合时,出现“TypeError:无法读取未定义的属性‘sigBytes’”错误。预请求脚本计算 hmac-sha256 签名,该签名也是要调用的主 API 参数的一部分。

下面是我的脚本:

let mobile = pm.environment.get('mobileNumber');
let value = pm.environment.get('value');
let merchantId = pm.environment.get('merchantId');
let referenceNumber = pm.environment.get('referenceNumber');
let authCode = pm.environment.get('authCode');
let secretKey = pm.environment.get('secretKey');

let string = mobile + value + merchantId + referenceNumber + authCode;

pm.environment.set('string', string);

let hmac = CryptoJS.HmacSHA256(string, secretKey);

pm.environment.set('hmac', hmac);

signature = "hmac256-" + hmac;

pm.environment.set('signature', signature);
Run Code Online (Sandbox Code Playgroud)

我已经尝试将字符串和 SecretKey 编码为 UTF-8、base64stringify、JSON stringify,但仍然出现错误。

以下是每个变量的样本值:

  • 手机 - +639012345678
  • 值 - 100
  • 商家ID - TEST_MERCHANT1
  • 参考编号 - TEST_MERCHANT1-000001
  • 授权码 - …

hmac cryptojs postman postman-collection-runner postman-pre-request-script

8
推荐指数
1
解决办法
3万
查看次数

HMAC - 通过 Postman 进行 SHA256 身份验证

我正在尝试通过 Postman 模拟对我的 Rails 应用程序的 webhook POST 请求(在真实的工作流程中运行良好)。我找到了很多例子,但没有一个起作用 - 我不断收到 401 代码。我所做的是定义标题,Pre-request Script如下所示:

\n

邮递员标题

\n

JSPre-request Script基于此文档

\n
postman.setEnvironmentVariable("hmac", CryptoJS.HmacSHA256(request.data, \'my_secret_string\').toString(CryptoJS.digest));\n
Run Code Online (Sandbox Code Playgroud)\n

但我仍然收到 401 错误。

\n

我用来触发 webhook 的外部 API 文档明确指出:

\n
\n

每个 Webhook 将使用 \xe2\x80\x8b X-AQID-Signature\xe2\x80\x8b 标头发送,该标头是通过使用 HMAC 方法和 SHA256 算法对请求的有效负载进行哈希处理而创建的,使用共享密钥作为盐。这意味着在收到有效负载后,您可以通过复制哈希方法来验证其完整性。

\n
\n

正如我所说,它在现实生活工作流程中运行良好,因此我在邮递员实现中遇到了错误。我错过了什么?

\n

javascript ruby-on-rails hmac postman postman-pre-request-script

8
推荐指数
2
解决办法
1万
查看次数

如何以编程方式清除邮递员的控制台

我正在尝试使用邮递员编写用于 api 测试的断言。为了调试,我使用 console.log() 函数,它使 Postman 的控制台变得混乱。

我已经尝试console.clear();过预请求脚本,但出现 TypeError。

邮递员错误:

在此输入图像描述

我可以在 Postman 的预请求脚本或测试部分以编程方式清除控制台吗?

javascript postman-pre-request-script

7
推荐指数
1
解决办法
7443
查看次数

在请求级别禁用收集预请求脚本

我在邮递员中有一个测试集合。我有一个要在集合级别运行的预请求脚本,但集合中有一些特定请求,我希望预请求脚本不要运行。

我怎样才能实现这个目标?

postman postman-pre-request-script

7
推荐指数
1
解决办法
4826
查看次数

需要 OpenApi 3.0 requestBody

我使用邮递员并使用 openAPI 3.0 创建 API。\n问题是当我发送此请求时,如果我添加主体或不添加主体,它会返回状态代码 200。我不明白,因为我说我的代码是请求主体和字段所需的在这个身体中,但没有什么价值(没有身体代码 200 和没有 GRP_CNOM 代码 200)...\nSomeOne 可以帮助我吗?

\n

我的 openAPI 代码:

\n
        post:\n            operationId: CreationGroup\n            summary: Creation groupe\n            requestBody:\n                $ref: '#/components/requestBodies/crea'\n            responses:\n                '200':\n                    description: '200 - Cr\xc3\xa9ation du groupe effectu\xc3\xa9'\n                    content:\n                        application/json:\n                            schema:\n                                type: object\n                                properties:\n                                    code:\n                                        type: integer\n                                    message:\n                                        type: string\n                                example:\n                                    code: 200\n                                    message: Le groupe a bien \xc3\xa9t\xc3\xa9 cr\xc3\xa9\xc3\xa9\n                '400':\n                    description: '400 - Cr\xc3\xa9ation du groupe \xc3\xa9chou\xc3\xa9e'\n                    content:\n                        application/json:\n                            schema:\n                                type: object\n                                properties:\n                                    code:\n                                        type: integer\n                                    message:\n                                        type: string\n                                example:\n                                    code: 200\n …
Run Code Online (Sandbox Code Playgroud)

postman openapi postman-pre-request-script

6
推荐指数
1
解决办法
5790
查看次数