我正尝试通过级联两个API请求并将第一个请求的响应(令牌)传递到授权标头字段中的另一个请求来检查端点可用性。虽然正在生成令牌,但第二个API没有在“令牌”变量中捕获正确的令牌。请告诉我脚本编写错误。是否有办法打印我的授权字段值?
脚本的输出如下所示:
{
"error": "Invalid token."
}
401
AssertionError [ERR_ASSERTION]: Expected 200 response
编码:
var assert = require('assert');
var request = require('request');
var options2,token,info;
var options = {
'method': 'POST',
'url': '1',
'headers': {
'Content-Type': 'application/x-www-form-urlencoded'
},
form: {
'client_id': '*',
'client_secret': '**',
'grant_type': 'client_credentials'
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
info = JSON.parse(response.body);
console.log(info.access_token);
token=info.access_token;
});
var request = require('request');
var options2 = {
'method': 'GET',
'url': '***',
'headers': {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + token,
}
};
request(options2, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
console.log(response.statusCode);
assert.ok(response.statusCode == 200, 'Expected 200 response');
});
1条答案
按热度按时间6psbrbz91#
将调用
request(options2, function (error, response)
与options 2沿着移动到request 1的回调函数中。由于request 1调用(token one)可能需要一些时间,所以request 2将在你还没有收到token调用的响应时被触发。你也可以使用Async/Await来使它更清晰,因为回调会使内容难以阅读。