2013-09-26 33 views
1

我正在使用SwigExpress中呈現JSON模板。使用res.render()和swig引擎時的快速 - 自定義內容類型

我包括下列中間件:

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

試試這個,我不能肯定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) 
}); 
相關問題