在Sails js中调用REST API

我使用Sails js。 我不知道如何调用REST api并获取响应数据。

我的控制器:

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是asynchronous的。

只需将你的res.send包装在callback中,如下所示:

 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); }); } }; 

您可能希望看看新的请求 – 答应api它是非常容易使用,并提供更好的控制在error handling和性能的情况下。 https://github.com/request/request-promise

 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... });