首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NodeJS中间件如何从可写流(http.ServerResponse)中读取

NodeJS中间件如何从可写流(http.ServerResponse)中读取
EN

Stack Overflow用户
提问于 2015-08-06 09:26:24
回答 1查看 473关注 0票数 0

我正在开发一个应用程序(使用Connect 而不是Express),该应用程序由一组中间件和节点-http-代理模块组成,也就是说,我有一个中间件链,如下所示:

代码语言:javascript
运行
复制
midA -> midB -> http-proxy -> midC 

在这个场景中,响应是由http代理编写的,它将请求代理到某个目标并返回内容。

我想创建一个中间件(比如midB)作为缓存。这样做的目的是:

  • 如果缓存了url,则缓存中间件将写入响应,并避免继续中间件链。
  • 如果未缓存url,则缓存中间件在中间件链位内传递请求,要求读取要缓存的最终响应内容。

如何才能做到这一点?还是有别的办法?

干杯

EN

回答 1

Stack Overflow用户

发布于 2015-08-07 12:08:47

回答我自己。如果您有像function(req, res, next){..}这样的中间件,并且需要读取响应对象的内容。

在这种情况下,res是一个http.ServerResponse对象,它是一个可写的流,链中的每个中间件都可以写入符合我们想要返回的响应的内容。

不要与使用http.request()发出请求时得到的响应相混淆,这是一个实际上是可读流的http.IncomingMessage

我发现读取所有中间件写入响应的内容的方法是重新定义write方法:

代码语言:javascript
运行
复制
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);
  }

  ...
}

任何其他解决方案将不胜感激。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31851894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档