邮递员 sendRequest 使用来自集合的授权

Posted

技术标签:

【中文标题】邮递员 sendRequest 使用来自集合的授权【英文标题】:postman sendRequest use authorization from collection 【发布时间】:2019-07-16 02:39:46 【问题描述】:

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

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

, function (err, res) 
    // do something
);

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

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

【问题讨论】:

你说的set in Collection是什么意思? 它是什么类型的 Auth 以及您如何在集合中使用它?您可以将其保存为变量并在预请求脚本中使用pm.variables.get('my_token_var') 语法。不过需要更多有关该问题的上下文和信息。 我已更新帖子以提供更多上下文。 文档没有明确表示 .sendRequest() 不像“Send”那样处理集合上下文。需要以这种方式再次手动指定标头意味着请求的工作方式应该与集合中的不同,但不是在脚本中。我认为这是一个错误。换句话说,在预请求和测试中需要在 auth 标头中编写脚本似乎很奇怪。 【参考方案1】:

这将起作用,假设您在一个具有授权标头的请求之后执行 sendRequest:

pm.sendRequest(
    url: 'http://some_url',
    method: 'GET',
    header: 
        'content-type': 'application/json',
        'authorization': request.headers["authorization"]
    ,

, function (err, res) 
    // do something
);

关于请求对象can be found here的信息。

【讨论】:

是的,这是个好主意。我在 ATM 上做的方式是在“请求 a”的测试中用我感兴趣的信息设置一个变量。然后在“请求 b”中,我在预请求脚本中检查该变量并抛出错误,告诉用户在“请求 b”之前运行“请求 a”。

以上是关于邮递员 sendRequest 使用来自集合的授权的主要内容,如果未能解决你的问题,请参考以下文章

文档标题中不存在邮递员集合授权

Postman / pm api sendRequest 命令:如何等到响应返回后再填充变量?

邮递员上的授权类型不记名令牌和来自 API 的请求数据,这需要带有颤振的令牌不记名

在Postman脚本中发送请求(pm.sendRequest)

在Postman脚本中发送请求(pm.sendRequest)

邮递员使用 JWT 进行授权调用时无法获得任何响应