如何通过Node.js服务器接收http请求,然后将该请求传递给另一台服务器?

这里有很多事情要做,所以我将把它简化成一个伪示例。 忘记安全和不在这里一分钟。 重点是了解function。

比方说,我运行一个本地web服务器与node.js开发一个网站。 在网站上,用户应该能够创build一个新的帐户。 帐户信息将通过ajax提交给节点服务器。 然后,我需要节点服务器接收传入的请求,并将其传递给另一个服务器,使我可以访问数据库。 例如,CouchDB。

所以这里是我想要发生的一个伪示例。

在客户端的浏览器中:

$.ajax({ url: './database_stuff/whatever', // points to the node web server method: 'POST', data: {name: 'Billy', age: 24} }); 

在Node web服务器中:

 var http = require('http'), dbServer = 'http://127.0.0.1:5984/database_url'; http.createServer(function (req, res) { /* figure out that we need to access the database then... */ // magically pass the request on to the db server http.magicPassAlongMethod(req, dbServer, function (dbResponse) { // pass the db server's response back to the client dbResponse.on('data', function (chunk) { res.end(chunk); }); }) }).listen(8888); 

合理? 基本上,将原始请求传递给另一台服务器然后将响应传递回客户端的最佳方式是什么?

如果dbServer url的服务器支持stream媒体,你可以做类似的事情

 var request = require('request'); req.pipe(request.post(dbServer)).pipe(res) 

request是一个模块,更多信息请看https://github.com/mikeal/request

这是可读性和易于实现,如果由于某种原因,你不能做到这一点,那么你可以从请求中拿出你需要的东西,然后手动发布它,然后将响应和res.send发送给客户端。

对不起,如果在我的代码中有错误,我没有testing,但我的观点应该清楚,如果不是,那么问。