【问题标题】:Express.js middleware for res.send , call function on each res.send()用于 res.send 的 Express.js 中间件,在每个 res.send() 上调用函数
【发布时间】:2017-08-02 06:20:36
【问题描述】:

目前我正在使用 express.js 制作 api 和

我想发送这样的通用响应格式:

res.send({status : 'suceess' , msg : '' , data : [] });

来自所有控制器(处理我的路由的函数)


我尝试过的:

someController.js

someFuntion(req,res,next)
{
    // these two lines will be in each controller , that I don't want
    // want it to be automated , and minimal as much as possible
    res.body({status : 'suceess' , msg : '' , data : [] });
    next();
}

在 middleware.js强文本

functions responseHandler(req,res)
{
    // perform some operation with req.body
    res.send(req.body);
}

server.js

app.use('/',someFuntion);
app.use(responseHandler);

我只是不想在所有控制器中重复相同的 json 格式,是 还有更好的方法吗?

【问题讨论】:

  • 如果这行得通,那么以这种方式完成是完美的
  • @selvakumar ,是的,它工作得很好,但我不认为这是一个好方法,内在本能。 :)
  • @VivekDoshi 你能弄明白吗?
  • @Naresh,我创建了一个响应帮助文件,然后将其设为全球可用,在其中我混合了响应,您可以查看以下答案,我已经实现了几乎相同的。

标签: javascript node.js express typescript


【解决方案1】:

为什么不使用带有 res 和要发送的输入数据的文件。 假设你创建了一个文件

responseHandler.js

module.exports = function (res , data){

   res.send({status:data.status,msg:data.msg,data:data.data});
};

controller.js

var response = require("responseHandler");

someFuntion(req,res,next)
{
    // these two lines will be in each controller , that I don't want
    // want it to be automated , and minimal as much as possible
   // res.body({status : 'suceess' , msg : '' , data : [] });
    data.status = 'sucess';
    data.msg='';
    data.data=[];
    response(res,data)
    next();
}

您可以使用这种方法并且可以更好地优化它。我已经使用了这种方法。您可以在 responsehandler 文件中使用两个函数,一个用于错误,一个用于当前数据。

【讨论】:

  • 然后我需要,将这一行添加到每个控制器 var response = require("responseHandler");
  • 我想要一些我们用于请求处理程序的中间件
  • 你必须做的,如果你将使用任何中间件他们也会做同样的事情,你必须输入你自己的和数据。不要使数据变量,在响应函数中设置三个参数(消息,数据,状态)。
  • 我正在寻找一些神奇的东西,一些非常简单的东西,不要到处重复。
  • 试用+1。
猜你喜欢
  • 1970-01-01
  • 2015-02-16
  • 1970-01-01
  • 2011-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多