2016-06-22 11 views
2

Im帆jsを使用しています。私は、REST APIを呼び出して応答データを取得する方法を知らない。Rails API in 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

あなたは、単純な 'console.log'と' sails.log.debug'を交換する場合は、あなたが何を見ていますか? – HeadCode

+0

@HeadCodeはありません。 console.log()does not work too – 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

あなたはエラー処理の場合には、より良いコントロールを使用して提供することは非常に容易である新しい要求 - 約束のAPIを見てみることを好むかもしれませんパフォーマンス。 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... 
     });