javascript - http请求获取正文

标签 javascript json node.js http

我是 node 的初学者,如果这个问题太明显了,请原谅。我也尝试了官方文档,但我可以解决这个问题。

我的 Node 服务器正在通过服务与外部 api 通信。

这是我目前在我的服务 api-service.js 中得到的:

    var http = require('http');

    exports.searchNear = function(lat, long, next){
       var options = {
           host: '1xx.xx.1xx.1x',
           path: '/api/v1/geo,
           method: 'GET'
      };

      var req = http.request(options, function(res) {
          var msg = '';

          res.setEncoding('utf8');
          res.on('data', function(chunk) {
          msg += chunk;
     });



   res.on('end', function() {
   console.log(JSON.parse(msg));
   });
   });

   req.on('error', function(err) {
     // Handle error
   });
  req.write('data');
  req.end();

  var mis = 'hello';
  next(null, mis);

此时我可以获取 Json 并将其记录到控制台中。但我想将返回的 json 存储在一个变量中,这样我就可以传入 next() 回调。

我尝试向结束事件添加回调,例如:

     exports.searchNear = function(lat, long, next){
       ....
       .....
       var req = http.request(options, function(res) {
           .....
           res.on('end', function(callback) {
            console.log(JSON.parse(msg));
            callback(msg);
           }); 
       });
       ....
       req.end('', function(red){
       console.log(red);
       });
       }

提前谢谢你。

最佳答案

代码中回调的名称应该是“next”:

var http = require('http');

exports.searchNear = function(lat, long, next) {
  var options = {
      host: '1xx.xx.1xx.1x',
      path: '/api/v1/geo,
      method: 'GET'
  };

  var req = http.request(options, function(res) {
      var msg = '';

      res.setEncoding('utf8');
      res.on('data', function(chunk) {
          msg += chunk;
      });

      res.on('end', function() {
          console.log(JSON.parse(msg));
          next(null, msg);
      });
  });

  req.on('error', function(err) {
      // Handle error
  });
  req.write('data');
  req.end();
}

然后你应该像这样使用你的函数:

searchNear(myLong, myLat, function (err, mesg) {
    console.log('your JSON: ', mesg) 
});

关于javascript - http请求获取正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29970839/

相关文章:

javascript - 当变量名称等于字符串时如何调用变量?

javascript - 使用 jqTransform 插件的错误

android - 有谁知道如何在React Native中从json中获取数据?

javascript - 如何在带有Node.js的Elasticsearch中的聚合中使用自定义脚本

node.js - 我无法在 Node 中修改数组

javascript - 正则表达式用下划线替换两个指定字符串之间的空格

javascript - 如何将数组值添加在一起直到它们达到特定数字,然后使用添加的值创建对象?

json - 如何 native 访问 Swift 4.2 中的不同 JSON key ?

java - Spring 无法使用空键返回 JSON 响应

node.js - alexa 无法识别 intent