问题非常简单。我想使用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