我正在开发一个应用程序(使用Connect not Express ),该应用程序由一组中间件和node-http-proxy模块组成,也就是说,我有一系列中间件,如:
midA -> midB -> http-proxy -> midC
在这种情况下,响应由http代理写入,代理将请求代理到某个目标并返回内容。
我想创建一个中间件(比如midB
)来充当缓存。这个想法是:
怎么能实现这个目标?还是有另一种方法?
干杯
答案 0 :(得分:0)
回答自己。
如果你有像res
这样的中间件,需要阅读响应对象的内容。
在这种情况下,http.ServerResponse
是一个http.request()
对象,一个可写流,允许链中的每个中间件编写符合我们想要返回的响应的内容。
请勿与使用
http.IncomingMessage
发出请求时获得的响应混淆,write
实际上是一个可读的流。
我发现读取所有中间件写入响应的内容的方式正在重新定义var middleare = function(req, res, next) {
var data = "";
res._oldWrite = res.write;
res.write = function(chunk, encoding, cb) {
data += chunck;
return res._oldWrite.call(res, chunck, encoding, cb);
}
...
}
方法:
RuntimeException
任何其他解决方案将不胜感激。