我正试图在postman中点击一下来发送经过身份验证的请求。
所以,我在本地变量中请求名为“Oauth”和I'm using Tests to store the token。
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("token", jsonData.access_token);
我现在要做的是自动(从预请求脚本)运行Oauth请求,以获取需要持有令牌的任何其他请求。
有没有办法获得访问令牌并发送经过身份验证的请求并点击一个邮递员按钮?
答案 0 :(得分:15)
我认为还没有办法在预请求脚本中执行此操作,但如果使用变量和“测试”选项卡,则只需点击几下即可。 There are fuller instructions on the Postman blog,但其要点是:
在该请求的“测试”部分中,将该请求的结果存储在变量中,可能类似于以下内容:
var data = JSON.parse(responseBody);
postman.setEnvironmentVariable("token", data.token);
运行身份验证请求 - 您现在应该看到为该环境设置了token
(单击右上角的眼形图标)。
{{token}}
,无论您之前粘贴在不记名令牌中的哪个位置。要刷新令牌,您需要做的就是重新运行身份验证请求。
答案 1 :(得分:11)
有点晚了但是对于遇到这篇文章的其他人来说,现在可以从Pre-request Script
部分发送另一个请求了。可以在此处找到一些示例:https://gist.github.com/madebysid/b57985b0649d3407a7aa9de1bd327990
答案 2 :(得分:6)
如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);
});
然后,您将{{access_token}}
引用为任何其他环境变量。
答案 3 :(得分:3)
您无法从Pre-request Script
部分发送另一个请求,但事实上,可以将请求链接起来并一个接一个地运行。
您将自己的请求收集到收藏中,run it收集Collection Runner
。
要查看请求结果,您可以关注other answer。
答案 4 :(得分:0)
您可以向集合中添加一个预请求脚本,该脚本将在每个Postman请求之前执行。例如,我使用以下命令从Apigee返回访问令牌
const echoPostRequest = {
url: client_credentials_url,
method: 'POST',
header:
'Authorization: Basic *Basic Authentication string*'
};
var getToken = true;
if (!pm.environment.get('token'))
{
console.log('Token missing')
}
else
{
console.log('Token all good');
}
if (getToken === true) {
pm.sendRequest(echoPostRequest, function (err, res) {
console.log(err ? err : res.json());
if (err === null) {
console.log('Saving the token');
console.log(res);
var responseJson = res.json();
console.log(responseJson.access_token);
pm.environment.set('token', responseJson.access_token)
}
});
}
答案 5 :(得分:0)
我尝试了多种解决方案,以下解决方案与您解析请求1的响应并将任何变量传递给第二个请求参数有关。 (在此示例变量中为Lastname。)
注意:-数据和用户是JSON对象.``
postman.clearGlobalVariable("variable_key");
postman.clearEnvironmentVariable("variable_key");
tests["Body matches string"] = responseBody.has("enter the match string ");
var jsonData = JSON.parse(responseBody);
var result = jsonData.data;
var lastName = result.user.lastName;
tests["Body matches lastName "] = responseBody.has(lastName);
tests["print matches lastName " + lastName ] = lastName;
答案 6 :(得分:0)
你可以使用 postman 的函数 sendRequest。
这里有一些例子。
https://gist.github.com/madebysid/b57985b0649d3407a7aa9de1bd327990