Node.js Express Jade:有没有办法为所有以".json"结尾的URL定义一个JSON视图?



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

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

最新更新