我的大多数处理程序如下所示:
function(req, res) {
var data = ...;
res.render('my_view', data);
}
我知道如果我想返回JSON,我需要将res.render
更改为res.json
,如下所示:
function(req, res) {
var data = ...;
res.json(data);
}
调试时,我经常希望看到原始数据(处理程序计算的JSON格式)。为此,我(手动)转到处理程序回调并将res.render('...',
更改为res.json(
。
我想知道是否有一种方法可以告诉express,如果URL满足某个条件令牌(例如,以.json
结尾,或者,有一个?format=json
查询参数),那么res.view
将无缝地委托给res.json
?
如果只是为了调试目的,那么您可以制作一个中间件,将render
方法重写为json
我将不建议在生产中使用此功能。
在您的app.configure
中添加以下内容:
app.use(function(req, res, next) {
if (req.query.json !== undefined) {
res.render = function(name, data) {
res.json(data);
}
}
return next();
});
所以它的作用是:如果请求在查询中有json
,那么它将覆盖render
方法,并调用json
。
因此,请使用以下内容进行测试:http://example.com/test?json