在发送响应之前创建一个中间件来验证响应对象

Create a middleware to verify a response object before sending the response

我正在 Express 框架上构建一个小型 CRUD 应用程序。我想要一个中间件来获取我的所有响应并根据预期的对象模式验证它们。我目前面临的问题是我不知道将这个中间件放在哪里。我试图在我的路由和错误处理程序中间件之后将其全局放置,但由于某种原因它不起作用。当我在我定义的路由之前粘贴它时,这个中间件可以工作,但没有来自路由处理程序的所需数据。我非常熟悉 Express 中的中间件概念,但仅限于请求。

如果您对此问题没有具体的答案,请随时分享您的意见,如果它有助于验证所有出站响应。谢谢。

感谢任何帮助。

我可以给你举个例子。您可以根据需要修改 response 对象。



// ResponseHandler.js
// Creating a response object
class ResponseHandler{
    constructor(statusCode, body, success = 1){

      this.statusCode = statusCode;
      this.body = body;
      this.body.success = success ? success : (statusCode == 200 ? 1 : 0);
    }
  }
  
  module.exports = ResponseHandler;


// responseHandler.js
const ResponseHandler = require('./ResponseHandler');

const responseValidator = (err, req, res, next) => {
  let res = res;
  if (!(res instanceof ResponseHandler)) {
    const statusCode = res.statusCode;
    const body = res.body;
    const success = res.body.success;
    res = new ResponseHandler(statusCode, body, success);
  }

  next(res);
};

const responseHandler = (err, req, res, next) => {

    const response = responseValidator(res);

    res.status(response.statusCode).send(response.body);
};

module.exports = {
    responseHandler
};

// Usage

// In index.js (After defining your routes)
app.use(responseHandler);

// In controller
let res = {
    statusCode: 200,
    body: {
        success: 1, // Optinal
        message: "This is a success message."
    }
}
return next(res);