Node.js Nodejs表达了如何编写中间件来处理所有响应

Node.js Nodejs表达了如何编写中间件来处理所有响应,node.js,express,Node.js,Express,在node JS Express中,我们可以编写中间件来拦截对其中任何一个的请求 通过调用next 通过调用res.send或res 这意味着,每当我们想要在特定的中间件中结束请求并发送响应时,我们都必须(至少)添加下面的代码片段 res.send(); 有没有这样的方法来编写响应框架中间件: responseFrame = (res,req,responseData) => { res.send(responseData); } 和insinderoute.js,在所有路径上

在node JS Express中,我们可以编写中间件来拦截对其中任何一个的请求

  • 通过调用
    next
  • 通过调用
    res.send
    res
  • 这意味着,每当我们想要在特定的中间件中结束请求并发送响应时,我们都必须(至少)添加下面的代码片段

    res.send();
    
    有没有这样的方法来编写响应框架中间件:

    responseFrame = (res,req,responseData) => {
        res.send(responseData);
    }
    
    和insinde
    route.js
    ,在所有路径上使用此中间件

    app.use(responseFrame);
    

    然后,我们只需使用
    next()
    结束任何中间件,只要我们定义了正确的路由,Express将负责发送响应(如果下一个中间件是
    responseFrame

    您可以使用res.locals进行此操作


    如果我理解正确,您想在您的中间件之间传输数据吗?如果需要,可以简单地在req对象内设置局部变量。第三个参数总是由express填充堆栈中的下一个中间件。是否要编写一个中间件,负责自动发送每个路由的响应?如果我错了,请纠正我。@Lasoloz是的,我想要实现我想要的,我需要在中间件之间传输数据,但如果有其他方法(除了编写单独的中间件),我会洗耳恭听。但是我不想修改req对象,它看起来有点违反直觉。@Farhan我想为所有可能的响应编写一个包装器。我仍然以不同的方式处理不同的路线,但响应框架总是相同的。我不想每次响应某个内容时都要编写该帧。我通过编写一个名为
    sendResponse
    的助手方法实现了这一点,并且没有使用
    res.send()
    而是使用
    sendResponse(res,data)
    如果我需要从以前的中间件传递参数,除了修改req对象之外还有其他方法吗,这是您的答案-谢谢,关于
    res.locals
    的链接很好!我不知道这件事。我想我可以用它来编写一个responseFrame中间件,在不修改req对象的情况下传递数据。对我来说,这听起来很合乎逻辑,因为express doc说的是
    一个包含响应局部变量的对象,该变量的作用域为请求,因此仅对在该请求/响应周期中呈现的视图可用
    ,这听起来像是我应该从以前的中间件获取额外信息的地方。如果你能将此作为答复转告我,我将欣然接受。