如何在POST请求触发之前获取GET请求的响应正文的内容?这可以承诺吗?

时间:2017-11-14 16:31:53

标签: javascript node.js

所以我从前端接收JSON对象并将其发送到我的后端到端点/ getData。在这里,我使用GET请求从API获取数据,我需要在最终的POST请求中发送JSON对象和GET响应体。但是当我发送请求时,GET响应的主体来得太晚了," formInfo"未定义。

如何解决此问题,以便在完成GET后POST请求发送?

 app.post('/getData', function(req, res) {
    debugger;
    var data = req.body;
    console.log(data);
    toSend = data;
    res.send({msg: "Success"});
    var findID = {};
    var endPoint = 'https://secure.p01.eloqua.com/API/REST/2.0/assets/form/' + toSend["formID"].toString();
    var options = {
        method: "GET",
        headers: {'Authorization': authenticationHeader, 'Content-Type': 'application/json'}
    };
    request.get(endPoint, options, function (error, response, body) {
        console.log(body);
        findID = body["elements"];
            request({
                    method: "POST",
                    headers: {'content-type': 'application/json', 'authorization': authenticationHeader},
                    url: 'http://localhost:3000/handleData',
                    json: {
                        "tuples": toSend,
                        "formInfo": body['elements']
                    }},
                function (error, response, body) {
                    console.log(response);
                });
    });
});

1 个答案:

答案 0 :(得分:0)

您是否考虑过使用fetch API

在现代浏览器中它是widely supported - 你可以将它描述为最坏的情况 - 和NodeJS。

有了它,您就可以链接请求,例如

fetch(`first.url.com`)
  .then(response => 
    fetch(`second.url.com`, {body: response.body})
  )