3

我正在尝试构建一个简单的节点服务

  • 处理来自 Web 客户端的 GET 请求
  • 解析提交的参数
  • 使用这些参数异步查询另一个 REST 服务
  • 将 REST 服务结果返回到原始 GET 请求。

我刚刚开始在节点中进行异步编程,一般来说,我很难理解如何在异步调用之间保留范围。

基本上 - 如何通过“req”将 JSON 服务“结果”发送回原始 GET 请求?

我正在使用 Express 和Request,路由处理程序如下所示:

exports.list = function(req, res){
var params = req.query;
var queryParam= params.queryParm;

var restURL =  "http://some-json-service.com?queryParam=" + queryParam;

var request = require('request');

request(restURL, function (error, response, body) {
    if (!error && response.statusCode == 200) {
        var result = JSON.parse(body);
        // ? How do I send result back to the req?
    }
})
4

1 回答 1

1

您可以从字面上返回响应,因此您将在有评论的地方执行以下操作:

request(restURL, function (error, response, body) {
  if (!error && response.statusCode == 200) {
      var result = JSON.parse(body);
      res(result)
  }
})

这种方法的问题是您的客户端请求将等待来自第二个服务的响应,如果必须这样做,这很好。请注意您可能造成的延迟。

还要确保在发生错误时您也返回响应。

这似乎很简单,所以如果我没有完全理解你的问题,请告诉我。

干杯。

维托。

于 2013-06-25T16:47:47.767 回答