Node.js Express 4-Url重写模块功能类似于IIS

Node.js Express 4-Url重写模块功能类似于IIS,node.js,express,Node.js,Express,我希望截获对某个url路径的一些请求,然后将其转发到另一个端点 我使用IIS和它们的重写模块做过类似的事情,所以我希望用Express实现同样的效果 到目前为止,我有一个如下的路由处理程序设置: app.all('/api/*', function(req, res) { var options = {}; options.uri = req.url.replace('/api/', 'http://some.apiendpoint.com/v1'); request(o

我希望截获对某个url路径的一些请求,然后将其转发到另一个端点

我使用IIS和它们的重写模块做过类似的事情,所以我希望用Express实现同样的效果

到目前为止,我有一个如下的路由处理程序设置:

app.all('/api/*', function(req, res) {
    var options = {};
    options.uri = req.url.replace('/api/', 'http://some.apiendpoint.com/v1');
    request(options, function(err, response, body){
      res.send(body);
    });
});
如您所见,我使用request对象对我的另一个api端点进行重新路由调用,并将响应体发送回客户端

对于GET请求,这很好,但正如我在请求文档中看到的,当选项中没有提供操作类型时,GET被用作默认值

那么,在使用request对象时,有没有一种方法可以让它使用传入路由处理程序的请求(req参数)执行请求?这样,不管已经设置了什么头,post参数等等,都只是在请求调用中传递

很抱歉,如果我在这里没有什么意义,我只是不想嗅出原始请求中的请求类型、参数、头等,然后在请求对象中重新打包成合适的选项。

req.pipe(请求(选项)).pipe(res)

这应该使用原始的请求选项(GET vs POST、headers等),将它们发送到新的URL,然后将新的响应发送给用户