2017-08-02 74 views
0

目前我做的API与express.js和Express.js中间件res.send,每个res.send通话功能()

我想给共同应对格式是这样的:

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格式,是否有更好的方法来做到这一点呢 ?

+0

如果这样做,它完美的做到这一点 – Selvakumar

+0

@selvakumar,是它的工作完美,但我不认为这是一个好的方式去内心的本能。 :) –

回答

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(); 
} 

您可以使用这种方式,可以更好地优化它。我已经使用这种方法。您可以在响应处理程序文件1中使用两个函数来处理错误,并使用一个处理当前数据。

+0

然后我需要,将此行添加到每个控制器var response = require(“responseHandler”); –

+0

我想要中间件这样的东西,我们正在使用请求处理程序 –

+0

你必须做的,如果你要使用任何中间件,他们也是一样的,你必须输入你自己的和数据。不要使数据变量,在响应函数(消息,数据,状态)中设置三个参数。 –