如何使用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服务器和端口,
- 使Node.js使用http_proxy,https_proxy和no_proxy环境variables
- 如何使用Node.js将HTTP请求中的图像显示到外部API
- 如何在使用iojs创buildhttp请求时捕获EHOSTDOWN套接字错误?
- 在Node.Js Express中,“res.render”是否结束http请求?
- 优化Node.js入站/出站连接
- TypeError:client.getReceiver不是azure-iot-device-http示例中的函数
- 在NodeJS Express框架中处理批量REST API请求
- 节点HTTP服务器的最高性能?
- `server.listen()`如何保持节点程序运行