1

Swig用来JSONExpress.

我包括以下中间件:

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()(我试图逃避的)?

4

1 回答 1

0

试试这个,我不确定 res.render 是否会再次尝试设置 content-type 标头:

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)
});
于 2013-09-26T19:16:11.637 回答