如何使用Node.js进行外部HTTP请求

这个问题很简单。 我想使用一个Node.js服务器作为代理来logging,validation和转发HTTP查询到后端HTTP服务器(PUT,GET和DELETE请求)。

我应该用什么库来达到这个目的? 恐怕我找不到一个。

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

我会结合节点HTTP代理和expression 。

node-http-proxy将通过RoutingProxy在您的node.js web服务器内部支持一个代理(请参阅另一个http服务器中称为代理请求的示例)。

在您的自定义服务器逻辑内,您可以使用express进行validation。 请参阅此处的身份validation示例 。

结合这两个例子应该给你你想要的。

我最近发现了REQUESTIFY 。

获取要求:

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

希望这可以帮助

您可以使用内置的http模块来执行http.request()

但是,如果您想简化API,则可以使用superagent等模块

node-http-proxy是一个非常好的解决scheme,正如@hross所build议的那样。 如果你不使用节点,我们使用NGINX来做同样的事情。 它在节点上运行得非常好。 我们用它来处理SSL请求,然后将它们转发给节点。 它也可以处理caching和转发路由。 好极了!

你可以使用node.js http模块来做到这一点。 您可以在Node.js HTTP上查看文档。

您需要将查询string也传递给另一个HTTP服务器。 你应该在ServerRequest.url中有 。

一旦你有了这些信息,你可以通过http.request()提供的选项传入后端HTTP服务器和端口,