我有一种情况,我试图从下面的POST请求中获取解析后的变量的json响应,我想将其存储在变量中,然后再次传递给标头中的下一个GET请求。我现在尝试的方法无法获得预期的结果,这有什么不对吗?在这里我应该如何获得预期的结果,请多多帮助。
PS:我是nodejs的新手
var request = require('request');
var headers = {
'Accept': 'application/json',
'Accept-Encoding': 'gzip, deflate',
'Authorization': 'Basic Y2Y6',
'Connection': 'keep-alive',
'Content-Length': '95',
'User-Agent': 'python-requests/2.22.0',
'content-type': 'application/x-www-form-urlencoded'
};
var dataString = 'grant_type=password&username=userpp&password=Password';
var options = {
url: 'https://testurl/oauth/token',
method: 'POST',
headers: headers,
body: dataString
};
let ab;
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
//console.log(body);
var parsedBody = JSON.parse(body)
//console.log(parsedBody["access_token"])
ab = parsedBody["access_token"];
}
}
request(options, callback);
var headers1 = {
'Accept': 'application/json',
'content-type': 'application/x-www-form-urlencoded',
'Authorization': `'bearer ' ${ab}`
};
var options1 = {
url: 'https://testurl1.com?getdata=user',
method: 'GET',
headers: headers1
};
function callback1(error1, response1, body1) {
if (!error1 && response1.statusCode == 200) {
console.log(body1);
}
}
request(options1, callback1);
答案 0 :(得分:0)
这里的问题是您正在运行异步代码,但要对其进行同步处理
您看到,当您依次调用request(options, callback);
然后内联request(options1, callback1);
时,在第二个请求运行时,第一个回调尚未发生
一种解决方法:将第二个请求放在第一个回调函数的内部。
费心的时间:使用request-promise
库并学习如何使用Promise和链接.then()
回调进行请求。
大脑时间不长:学习如何将异步/等待功能用作与承诺互动的另一种更好的方法