Javascript 发送两个nodejs http请求,第二个依赖于第一个
我需要使用用户名/密码组合从服务器获取令牌,然后在收到令牌后,我需要使用令牌作为头的内容发送第二个请求。到目前为止,这就是我所拥有的:Javascript 发送两个nodejs http请求,第二个依赖于第一个,javascript,node.js,request,Javascript,Node.js,Request,我需要使用用户名/密码组合从服务器获取令牌,然后在收到令牌后,我需要使用令牌作为头的内容发送第二个请求。到目前为止,这就是我所拥有的: var requestData = { 'username': 'myUser', 'password': 'myPassword1234' } var options = { hostname: 'localhost', port: 8080, path: '/login', method: 'POST',
var requestData = {
'username': 'myUser',
'password': 'myPassword1234'
}
var options = {
hostname: 'localhost',
port: 8080,
path: '/login',
method: 'POST',
headers: {
'Content-Type': 'application/json',
}
}
var req = http.request(options, function(res) {
console.log("Status: " + res.statusCode)
res.setEncoding('utf8');
let body = ""
res.on('data', function (data) {
if (res.statusCode == 200) {
console.log("Success")
body += data
} else {
invalidLogin()
}
})
res.on('end', function () {
body = JSON.parse(body)
console.log("DONE")
console.log(body)
validLogin(body["token"])
})
})
req.on('error', function(e) {
console.log('error: ' + e.message)
})
req.write(JSON.stringify(requestData))
req.end()
然后在validLogin()
(在第一个请求中调用)中,我有以下内容:
function validLogin(token) {
console.log(token)
var options = {
hostname: 'localhost',
port: 8080,
path: '/dashboard',
method: 'GET',
headers: {
'Authorization': token,
}
}
var req = http.request(options, function(res) {
console.log("Status: " + res.statusCode)
res.setEncoding('utf8');
let body = ""
res.on('data', function (data) {
if (res.statusCode == 200) {
body += data
} else {
console.log(body)
}
})
res.on('end', function() {
console.log(body)
})
})
req.on('error', function(e) {
console.log('error: ' + e.message)
})
req.end()
}
第一个请求按预期工作并响应,但第二个请求永远不会发出。我知道函数正在被调用,因为它会打印到控制台,但请求不会打印任何内容。我会使用
请求承诺
将请求链接在一起非常容易。(代码未测试,但一般要点准确)
var rp=require('request-promise');
变量选项\u登录={
主机名:“localhost”,
端口:8080,
路径:'/login',
方法:“POST”,
标题:{
“内容类型”:“应用程序/json”,
},
有效负载:JSON.stringify(requestData),
json:true
};
变量选项\u请求={
主机名:“localhost”,
端口:8080,
路径:'/dashboard',
方法:“GET”,
json:true
};
rp(选项)
.catch(函数(parsedBody){
log(“登录时出错”);
})
.then(函数(parsedBody){
选项\u request.headers={
“授权”:parsedBody.token,
};
返回rp(选项请求);
})
.catch(函数(err){
log(“加载仪表板失败…”);
});
我尝试查看您的示例和其他一些示例,它只发送第一个请求,不管哪个请求是第一个请求,它只发送第一个请求。你知道为什么会这样吗?