2016-06-22 2 views
2

Im использование Sails js. Я не знаю, как вызвать REST api и получить данные ответа.Вызов API REST в Sails js

Мой контроллер:

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».

+0

Что вы видите, если вы замените 'sails.log.debug' с простым' console.log'? – HeadCode

+0

@HeadCode ничего. console.log() тоже не работает – furyfish

ответ

0

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


    } 
}; 
+0

Запрос не удался. Некоторые ошибки: GET http: // {my_ip}: 1337/getStatic.json net :: ERR_CONNECTION_REFUSED и GET http: // {my_ip}: 1337/getStatic.json net :: ERR_EMPTY_RESPONSE – furyfish

0

Вы хотели бы взглянуть на новый запрос-обещание апи это очень проста в использовании и обеспечивают лучший контроль в случае обработки ошибок и производительность. 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... 
     });