2017-03-08 228 views
0

我正在努力做一些對我來說很新鮮的事情。我正在構建API以使用Node和AWS Lambda與Nationbuilder網站進行交互。我需要使用Nationbuilder的API從數據庫中獲取信息。我在代碼中嘗試了很多變體,這是我最近精簡的嘗試。它返回「錯誤:連接ECONNREFUSED 127.0.0.1:443」。有沒有人看到我應該做什麼不同?我用******代替了訪問令牌。出口處理函數幾乎不被使用;它連接了Lambda處理請求的主要功能,而不是製作它們。ECONNREFUSED,節點HTTP GET請求

我可以通過hurl.it成功地發出GET請求,所以問題出在我身上。

var package = require('./package.json'); 
var myNewApi = require('./lib/my_new_api.js'); 
var http = require("http"); 
var https = require("https"); 

var https = require('https'); 
var str = ''; 
var url = "https://neenahrockets.nationbuilder.com/api/v1/people/count?access_token=**************"; 

exports.handler = function (event, context) { 
    callback = function(response) { 
     response.on('data', function (chunk) { 
     str += chunk; 
     }); 
     response.on('end', function() { 
     console.log(req.data); 
     console.log(str); 
     }); 
    } 

    var options = { 
     url : url, 
     method: "GET", 
     json: true, 
     headers: { 
      "content-type": "application/json", 
     }, 
    } 

    var req = https.get(options, callback) 

}; 
+1

你確定'url'是你需要傳遞給'get'方法的正確屬性名嗎?由於錯誤信息是127.0.0.1,這聽起來像是你沒有正確傳遞URL,我認爲'https.get'採用與'https.request'相同的參數,它採用單獨的'host'或'hostname '和'路徑'參數。 –

+0

數據庫是否位於本地主機地址'127.0.0.1:443'運行?例如,如果數據庫不在本地運行,Mongo將會拋出類似的錯誤。 – Pytth

回答

1

感謝Mark B用URL屬性捕捉問題。這是爲我工作的代碼。我做了一個小的改動,添加到http請求標題中。

var package = require('./package.json'); 
var myNewApi = require('./lib/my_new_api.js'); 
var http = require("http"); 
var https = require("https");  

var str = ''; 

exports.handler = function (event, context) { 
    callback = function(response) {  

     response.on('data', function (chunk) { 
     str += chunk; 
     }); 

     response.on('end', function() { 
     console.log(req.data); 
     console.log(str); 

     }); 
    } 

    var options = { 
     host : 'neenahrockets.nationbuilder.com', 
     path: '/api/v1/people/count?access_token=*********', 
     json: true, 
     headers: { 
      "content-type": "application/json", 
      "accept": "application/json" 
     }, 
    } 

var req = https.get(options, callback) 

};