我的NodeJS代码完全失败了。我需要向REST API发出HTTP请求-该API向我发送了新的URL作为响应。收到该URL后,我需要向该URL发出请求,依此类推。
我正在使用
SamDbContainer
软件包。响应如下所示:
var request = require('request');
我该怎么做?我是NodeJS领域的新手,但是我已经有很多使用JavaScript的经验。因此,对我来说这不是一个大问题。
我听说过有关{
"nextURL": "http:// ..."
}
的内容,但我不知道这是否是正确的选择。请帮帮我!
答案 0 :(得分:1)
我想你可以这样
const request = require('request');
request('https://api.xxx', { json: true }, (err,
res, body) => {
if(response.statusCode === 200) {
nextUrl(body['nextURL']);
}
else (err) {
return console.log(err);
}
});
function nextUrl(url){
request(url, { json: true }, (err,
res, body) => {
if(response.statusCode === 200) {
//your logic
}
else (err) {
return console.log(err);
}
});
}
答案 1 :(得分:0)
我认为您正在寻找这个
Promise是创建Promise时不一定知道的值的代理。它允许您将处理程序与异步操作的最终成功值或失败原因相关联。这样一来,异步方法就可以像同步方法一样返回值:在将来的某个时候,异步方法将返回最终值,而不是最终值。
var request = require('request-promise');
var baseUrl = 'http://111.111.111.111:8080';
request.post(baseUrl + '/api/auth/login')
.then(function(body) {
console.log("login OK: " + body);
}).then(function() {
return request.post(baseUrl + '/api/auth/login'); // <-- inside a function
}).then(function(body) {
console.log("login OK again: " + body);
}).catch(function (err) {
console.error(err);
});
答案 2 :(得分:0)
我建议您使用以下格式的承诺的http客户端,例如axios
const axios = require('axios');
axios.get('firstURL')
.then(firstRes=>{
return axios.get(firstRes.data.nextURL)
})
.then(secondRes=>{
console.log(secondRes.data)
})
.catch(err=>{
console.log('something went wrong', err);
})