假设我的路由文件具有以下 REST 端点:
app.get('/userlist', function (req, res) {
var httpClient = addon.httpClient(req);
httpClient.get('example.com/users',
function(error, response, body) {
if (!error && response.statusCode == 200) {
var users = JSON.parse(body);
users.forEach(function(user, index, arr)
{
//do the 2nd REST GET request here using user.id ???
}
res.render('userlist', {
content : users
});
}
});
}
端点使用 RESTful Web 服务,结果如下所示:
{ users : [{ id : 12345 },{ id : 23456 },{ id : 34567 }]}
现在我想知道如何/在哪里做第二个。 REST GET 请求 (/userinfo
) 用于检索用户的额外信息(基于第一个请求结果中的 user.id
)> 并更新第 1 个。结果为第二。
问候
最佳答案
使用仅支持回调的httpClient
,最好的选择是为每个步骤创建一个函数并避免深层嵌套的 block :
function findFirstUser(callback) {
httpClient.get('example.com/users', (error, response, body) => {
var firstUserId = JSON.parse(body).users[0]
getUser(firstUserId, callback)
})
}
function getUser(id, callback) {
httpClient.get('example.com/users/' + id, callback)
}
async
图书馆也可以帮助您做到这一点。
我不推荐这两种方法。相反,请使用支持 Promises
的 httpClient
,例如 axios
:
httpClient.get('example.com/users')
.then(response => JSON.parse(response.body).users[0])
.then(userId => httpClient.get('example.com/users/' + userId))
.catch(error => console.error(error))
关于node.js - 如何在expressjs Nodejs中发出嵌套的REST GET请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41838060/