3

这里发生了很多事情,所以我将把它简化为一个伪示例。在这里暂时忘掉安全和诸如此类的事情。关键是要了解功能。

假设我正在使用 node.js 运行本地 Web 服务器来开发网站。在网站中,用户应该能够创建一个新帐户。账户信息将通过 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);

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

4

1 回答 1

3

如果dbServerurl 的服务器支持流式传输,您可以执行类似的操作

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

模块在哪里request,更多信息请看这里https://github.com/mikeal/request

这是非常易读且易于实现的,如果由于某种原因您无法执行此操作,那么您可以从请求中获取您需要的内容并手动POST获取它,然后将响应和res.send它发送给客户端。

抱歉,如果我的代码中有错误,我还没有测试过,但我的意思应该很清楚,如果没有,那就问吧。

于 2013-05-21T21:57:44.367 回答