我需要在调用app.json后在express中向app.json和app.jsonp响应中添加一些数据,向此添加中间件的正确方法是什么?我知道我可以做类似的事情:
var jsonTemp = function(status, data) {
if (!data) {
data = status;
status = 200;
}
data.extraValue = 'foo';
res.json(status, data);
}
res.json = jsonTemp;
但像这样的猴子修补似乎是一个不错的主意"。有没有一种官方方式可以通过某种中间件来加入响应?
答案 0 :(得分:2)
我认为猴子修补实际上可能是最好的解决方案,而不了解您要解决的问题。但是,您显示的代码会使服务器崩溃,因此请不要使用它。
app.use(function (req, res, next) {
var orig = res.json;
res.json = function json(status, data) {
if (!data) {
data = status;
status = 200;
}
data.extraValue = 'foo';
orig.call(this, status, data);
};
next();
});
这里我将原始函数存储在变量orig
中,然后在我完成修改后委托给那个。您的代码一遍又一遍地调用您修改过的函数,因为它现在位于res.json
。
答案 1 :(得分:0)
您可以注册自己的template engine来格式化输出。也许这有帮助。