用于res.send的Express.js中间件,每个res.send上的调用函数()

时间:2017-08-02 06:20:36

标签: javascript node.js express typescript

目前我正在使用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();
}

in 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格式   还有更好的办法吗?

1 个答案:

答案 0 :(得分: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文件中使用两个函数,一个用于出错,另一个用于当前数据。