快递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,然后发送给用户新的响应。