Express - 使用res.render()和swig引擎时自定义Content-Type

时间:2013-09-26 18:10:02

标签: express

我正在使用SwigJSON中呈现Express个模板。

我包含了以下中间件:

app.engine('json', require('swig').renderFile);
app.set('view engine', 'json');
app.set('views', app.get('templates_dir'));

但是,在渲染我的模板时,我得到Content-Type: text/html; charset=utf-8

使用我上面声明的json引擎时,有一种简单的方法可以自定义http标头吗?

或者我应该不可避免地引导res.render()并手动设置标题,或者只是创建另一种方法,如res.renderJSON()(我试图逃避)?

1 个答案:

答案 0 :(得分:0)

试试这个,我不确定res.render是否会尝试再次设置内容类型标题:

function setJsonHeader(req, res, next){
  res.set('Content-Type', 'application/json');
  next();
};

// apply the middleware to all routes, before your router:
app.use(jsonMiddleware);
app.use(app.router);

// or instead, apply it selectively:
app.use(app.router);
app.get('/api/*, setJsonHeader);
app.get('some/other/json'
, setJsonHeader
, function(req, res, next){
  var data = {foo:'bar'};
  res.render('aJSONTemplate', data)
});