Node.js 在sailsjs中调用restapi

Node.js 在sailsjs中调用restapi,node.js,sails.js,Node.js,Sails.js,我用的是Sails js。我不知道如何调用RESTAPI并获取响应数据 我的控制器: var request = require('request'); var http = require('http'); var https = require('https'); module.exports = { main: function(req, res){ var rs = "Someone"; var options = { h

我用的是Sails js。我不知道如何调用RESTAPI并获取响应数据

我的控制器:

var request = require('request');
var http = require('http');
var https = require('https');

module.exports = {
    main: function(req, res){
        var rs = "Someone";
        var options = {
            hostname: 'thomas-bayer.com',
            port: 80,
            path: '/sqlrest',
            method: 'GET'
        };

        http.request(options, function(response) {      
            sails.log.debug('log:'+response);
            rs = response;
        });

        res.send("Hello "+ rs);
    }
};
我无法获取响应数据,sails.log.debug()在控制台上没有显示任何内容


它只在浏览器上显示“Helo Someone”。

http.request是异步的

只需将res.send包装在回调中,如下所示:

var request = require('request');
var http = require('http');
var https = require('https');

module.exports = {
    main: function(req, res){
        var rs = "Someone";
        var options = {
            hostname: 'thomas-bayer.com',
            port: 80,
            path: '/sqlrest',
            method: 'GET'
        };

        http.request(options, function(response) {      
            sails.log.debug('log:'+response);
            rs = response;

            res.send(rs);
        });


    }
};

您可能想看看新的RequestPromiseAPI,它非常易于使用,并在错误处理和性能方面提供更好的控制。


如果将
sails.log.debug
替换为一个简单的
console.log
,您会看到什么。console.log()不起作用,请求将失败。一些错误,如:GET http://{my_ip}:1337/getStatic.json net::ERR_CONNECTION_拒绝和GET http://{my_ip}:1337/getStatic.json net::ERR_EMPTY_响应
Install 
npm install --save request
npm install --save request-promise

Usage 
    var rp = require('request-promise');
    var options = {
      uri: 'https://api.github.com/user/repos',
      qs: {
        access_token: 'xxxxx xxxxx' // -> uri + '?access_token=xxxxx%20xxxxx'
      },
      headers: {
        'User-Agent': 'Request-Promise'
      },
      json: true // Automatically parses the JSON string in the response
    };

    rp(options)
      .then(function(repos) {
        console.log('User has %d repos', repos.length);
      })
      .catch(function(err) {
        // API call failed...
      });