問題非常簡單。我想使用Node.js服務器作爲代理來記錄,驗證和轉發HTTP查詢到後端HTTP服務器(PUT,GET和DELETE請求)。如何使用Node.js創建外部HTTP請求
我應該爲此使用什麼庫?恐怕我找不到一個。
問題非常簡單。我想使用Node.js服務器作爲代理來記錄,驗證和轉發HTTP查詢到後端HTTP服務器(PUT,GET和DELETE請求)。如何使用Node.js創建外部HTTP請求
我應該爲此使用什麼庫?恐怕我找不到一個。
支持的NodeJS作爲http.request標準模塊: http://nodejs.org/docs/v0.4.11/api/http.html#http.request
var http = require('http');
var options = {
host: 'example.com',
port: 80,
path: '/foo.html'
};
http.get(options, function(resp){
resp.on('data', function(chunk){
//do something with chunk
});
}).on("error", function(e){
console.log("Got error: " + e.message);
});
你可以使用node.js http模塊來做到這一點。您可以查看文檔Node.js HTTP。
您需要將查詢字符串也傳遞給其他HTTP服務器。你應該在ServerRequest.url。
一旦你擁有了這些信息,你可以通過後端HTTP服務器和端口中,你將在http.request()
提供我將結合node-http-proxy和express的選項。
節點HTTP代理服務器將支持通過RoutingProxy
您的node.js的Web服務器內的代理(見稱爲另一個HTTP服務器內代理請求的例子)。
在您的自定義服務器邏輯中,您可以使用express進行身份驗證。請參閱auth sample here for an example。
結合這兩個例子應該給你你想要的。
您可以使用內置的http
模塊來執行http.request()
。
但是,如果你想簡化你可以使用一個模塊的API,如superagent
更加健壯的API確實如此。我不怪責節點只提供低級別的API,但開始處理大塊數據只是簡單的煩人。 –
節點HTTP代理是一個很好的解決方案,是由@hross上述建議。如果您在使用節點時沒有死心,我們使用NGINX來做同樣的事情。它非常適合節點。我們使用它來處理SSL請求,然後將它們轉發到節點。它也可以處理緩存和轉發路由。好極了!
我最近發現REQUESTIFY。
GET請求:
requestify.get('http://example.com').then(function(response) {
// Get the response body
response.getBody();
});
郵政JSON:
requestify.post('http://example.com', {
hello: 'world'
})
.then(function(response) {
// Get the response body (JSON parsed or jQuery object for XMLs)
response.getBody();
// Get the raw response body
response.body;
});
希望這有助於
我建議添加'resp.setEncoding('utf8');'(或任何你使用的編碼)來獲取數據爲utf8字符串。如果我理解正確,否則你會得到Buffer對象,並且如果多字節字符被分成兩個塊,可能最終會遇到多字節字符的問題。 (剛剛調試了一段時間的相關問題) – Touko
我已經開始使用'request' npm模塊了。 – chovy