如何使用 Node.js 发出外部 HTTP 请求

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

我该用哪个图书馆呢? 恐怕我找不到。

133857 次浏览

您可以使用 node.js http 模块来完成这项工作。

您还需要将查询字符串传递给另一个 HTTP 服务器。你应该把它放在 ServerRequest.url里。

一旦获得了这些信息,就可以传入后端 HTTP 服务器,并将 http.request()中提供的选项移植到其中

我会结合 Node-http-xy 节点-代理快递

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

在自定义服务器逻辑中,可以使用 Express 进行身份验证。

将这两个示例结合起来应该能够得到您想要的结果。

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

但是,如果你想简化的 API,你可以使用一个模块,如 超级经纪人

Node-http-xy 是一个很好的解决方案,正如上面@hross 所建议的那样。如果在使用节点时没有死机,那么我们使用 NGINX来做同样的事情。它与节点工作得非常好。例如,我们使用它在将 SSL 请求转发到节点之前处理它们。它还可以处理缓存和转发路由。耶!

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