【发布时间】:2018-10-17 02:33:34
【问题描述】:
在 node JS Express 中,我们可以编写中间件来拦截对任何一方的请求
- 通过调用
next调用链中的下一个中间件 - 通过调用
res.send或res提供的类似函数结束链
这意味着,每次我们想在特定的中间件中结束请求并发送响应时,我们都必须(至少)添加以下 sn-p。
res.send();
有没有办法像这样写一个响应帧中间件:
responseFrame = (res,req,responseData) => {
res.send(responseData);
}
和insinde route.js,在所有路径上使用这个中间件
app.use(responseFrame);
然后,我们只需要用next() 结束任何中间件,只要我们定义正确的路由,Express 就会负责发送响应(如果下一个中间件是responseFrame)
【问题讨论】:
-
如果我理解正确的话,你想在你的中间件之间传输数据吗?如果你愿意,你可以简单地在 req 对象中设置局部变量。第三个参数总是由 express 填充堆栈中的下一个中间件。
-
您想编写一个中间件,负责自动为每条路由发送响应吗?如果我错了,请纠正我。
-
@Lasoloz 是的,我想要实现我想要的,我需要在中间件之间传输数据,但如果有其他方式(除了编写单独的中间件),我会全力以赴。但是我不喜欢修改 req 对象,它看起来有点违反直觉。
-
@Farhan 我想为所有可能的响应编写一个包装器。我仍然以不同的方式处理不同的路线,但响应框架始终相同。我不想每次响应时都写那个框架。
-
我通过编写一个名为
sendResponse的辅助方法来实现这一点,而不是使用res.send()我使用sendResponse(res, data)