使用async等待从request.post获取http响应

时间:2016-09-20 22:22:19

标签: javascript node.js async-await babeljs

我正在使用async / await(http://stackabuse.com/node-js-async-await-in-es7/并使用bable进行转换)和请求(https://github.com/request/request)在节点中编写服务器。我正在尝试向外部api发出post请求并访问http响应头。我只能弄清楚如何访问我发送的请求。我如何获得HttpResponse?

这是代码

var options = {
  url: externalUrl,
  form: body
};

try {
  var httpResponse = await request.post(options);
  console.log(httpResponse.headers.location);
  return "post request succeeded!";
} catch (err) {
  return done(err, null);
}

2 个答案:

答案 0 :(得分:1)

看起来request是通过回调实现的。 ES7 async / await仅适用于Promises。您可以使用bluebird之类的库来宣传request中的所有方法。 Async / await应该可以在之后使用。

答案 1 :(得分:0)

如果您使用的是“请求”,则不需要异步。

您可以轻松完成此操作:

request({
    headers: {
        'Content-Type': 'application/json',
    },
    uri: url,
    body: JSON.stringify(options),
    method: 'POST'
}, function (err, res, body) {
    var obj = JSON.parse(body);
    if(err){
       console.log("Ooops: " + err);
    }else{
       console.log(res.headers['content-type']);
       //Do some stuff with the server response;
    }
});