0

我的大多数处理程序如下所示:

function(req, res) {
  var data = ...;
  res.render('my_view', data);
}

我知道如果我想返回 JSON 我需要更改res.renderres.json,如下所示:

function(req, res) {
  var data = ...;
  res.json(data);
}

调试时,我经常想查看原始数据(由处理程序计算的 JSON 格式)。为此,我(手动)转到处理程序回调并更改res.render('...',res.json(.

我想知道是否有办法告诉 express 如果 URL 满足某个条件令牌(例如,以 结尾.json,或者具有?format=json查询参数),那么res.view将无缝委托给res.json

4

1 回答 1

2

如果只是出于调试目的,那么您可以制作一个中间件,将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

于 2013-08-30T11:38:32.717 回答