快递4 - 网址改写模块的功能类似于IIS

问题描述:

我期待得到一些请求,对某个url路径截获然后转发到不同的端点。快递4 - 网址改写模块的功能类似于IIS

我已经做了类似的事情使用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); 
    }); 
}); 

正如你可以看到我使用请求对象进行重新路由呼叫到我的其他的API端点,并发送响应主体回到客户端。

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

那么,有没有办法在使用请求对象时,使它使用请求执行请求,就像传入路由处理程序(请求参数)一样?那样的话,任何头文件已经被设置,post params等等,都只是在请求调用中传递的?

对不起,如果我在这里没有多大意义,我只是不想在原始请求中嗅探请求类型,参数,头文件等,然后重新打包为请求对象中的合适选项。

req.pipe(request(options)).pipe(res);

这应该使用原始请求选项(GET VS POST,标题等),并将它们发送到新的URL,然后发送给用户新的响应。