Las*_*ela 28 javascript postman
我正试图在邮递员中点击一下来发送经过身份验证的请求.
所以,我有一个名为"Oauth"的请求,我正在使用Tests将令牌存储在一个局部变量中.
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("token", jsonData.access_token);
Run Code Online (Sandbox Code Playgroud)
我现在要做的是自动(从预请求脚本)运行Oauth请求,以获取需要持有令牌的任何其他请求.
有没有办法获得访问令牌并通过一个邮递员按钮点击发送经过身份验证的请求?
Han*_*ele 18
我认为还没有办法在预请求脚本中执行此操作,但如果使用变量和"测试"选项卡,则可以将其简化为几次单击.Postman博客上有更全面的说明,但其主旨是:
在该请求的Tests部分中,将该请求的结果存储在变量中,可能类似于以下内容:
var data = JSON.parse(responseBody);
postman.setEnvironmentVariable("token", data.token);
Run Code Online (Sandbox Code Playgroud)运行身份验证请求 - 您现在应该看到为该token
环境设置了该请求(单击右上角的眼形图标).
{{token}}
在您之前粘贴在承载令牌中的任何位置使用.要刷新令牌,您需要做的就是重新运行身份验证请求.
KBu*_*usc 16
有点晚了但是对于遇到这篇文章的其他人来说,现在可以从该Pre-request Script
部分发送另一个请求了.可以在这里找到一些例子:https://gist.github.com/madebysid/b57985b0649d3407a7aa9de1bd327990
Ger*_*obi 11
如KBusc所述,并从这些示例中得到启发,可以通过设置如下所示的预请求脚本来实现目标:
pm.sendRequest({
url: pm.environment.get("token_url"),
method: 'GET',
header: {
'Authorization': 'Basic xxxxxxxxxx==',
}
}, function (err, res) {
pm.environment.set("access_token", res.json().token);
});
Run Code Online (Sandbox Code Playgroud)
然后,您只需将其引用{{access_token}}
为任何其他环境变量即可。
首先,添加预请求脚本:
pm.sendRequest({
url: 'http://YOUR_SITE',
method: 'POST',
body: {
mode: 'urlencoded',
urlencoded: [
{ key: "login", value: "YOUR_LOGIN" },
{ key: "password", value: "YOUR_PASSWORD" }
]
}
}, function (err, res) {
if (err === null) {
pm.globals.set("token", res.json()["access_token"]);
}
});
Run Code Online (Sandbox Code Playgroud)
其次,设置自定义变量(可以使用它的值之后):
第三,您可以使用变量 by{{VARIABLENAME}}
,例如:
小智 7
我想到了同样的问题,基本上是“如何运行另一个请求的测试或预请求脚本选项卡中已经存在的另一个请求,而不使用 构建该请求pm.sendRequest(reqConfObj)
?”,然后我postman.setNextRequest('requestName')
从Postman 讨论中找到了方法,该方法是将引导您进入有关构建请求工作流程的邮递员文档页面。
但问题是,postman.setNextRequest()
如果您没有运行文件夹或集合,该方法将不会运行,因此只需单击包含脚本的请求的“发送”按钮将不起作用。
我还想提请您注意以下几点:
postman.setNextRequest()
总是最后运行,即使您已将其写入脚本的顶部。脚本中的其他代码将运行,然后postman.setNextRequest
进行初始化。postman.setNextRequest(null)
.我鼓励每个使用 Postman 的人查看提到的链接,我相信这是一个很棒的功能,每个人都应该尝试一下!:)
所有这些解决方法都需要重新创建请求。邮递员不支持你想做的事。为了得到你想要的,你必须使用 Insomnia,它允许你映射来自其他请求响应的正文值,如果这些响应没有被执行,它会自动运行它们或根据所选策略运行它们。
但是如果你想坚持使用 Postman,那么你必须将之前的完整请求参数保存到全局变量中,然后从该变量中以 JSON 字符串的形式检索之前请求的所有配置,将该 JSON 解析为一个对象并将其分配给 pm .sendRequest 作为第一个参数。