如何在expressjs nodejs中进行嵌套的REST GET请求

时间:2017-01-24 20:08:38

标签: node.js rest express

我们说我的路由文件有以下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并更新第一个。第2次结果。

此致

1 个答案:

答案 0 :(得分:2)

使用仅支持回调的httpClient,最好的办法是为每一步创建一个函数,避免深层嵌套的块:

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库也可以帮助您完成此操作。

我不推荐任何一种方法。相反,请使用支持httpClient的{​​{1}},例如axios

Promises