我正在使用Swig
在JSON
中呈现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()
(我试图逃避)?
答案 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)
});