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

时间:2011-11-01 13:18:33

标签: http node.js

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

我应该为此目的使用哪个库?我恐怕找不到一个。

5 个答案:

答案 0 :(得分:134)

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

答案 1 :(得分:7)

我会将node-http-proxyexpress结合起来。

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

在自定义服务器逻辑中,您可以使用express进行身份验证。请参阅auth sample here for an example

结合这两个例子可以给你你想要的东西。

答案 2 :(得分:5)

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

但是,如果您想简化API,可以使用superagent

等模块

答案 3 :(得分:1)

node-http-proxy是一个很好的解决方案,正如@hross上面提到的那样。如果你没有使用节点,我们使用NGINX做同样的事情。它对节点非常有效。我们使用它来处理SSL请求,然后再将它们转发到节点。它还可以处理缓存和转发路由。耶!

答案 4 :(得分:0)

您可以使用node.js http模块来执行此操作。您可以查看Node.js HTTP上的文档。

您还需要将查询字符串传递给其他HTTP Server。你应该在ServerRequest.url中拥有它。

获得这些信息后,您可以在http.request()

中提供的选项中传入后端HTTP服务器和端口