expressionjs 4如何提供json结果而不呈现任何视图/ css
我使用Express 4来创build一个json API服务。 我似乎无法定义它发送一个简单的JSON没有试图呈现视图。
var express = require('express'); var router = express.Router(); module.exports = function (app, namespace) { router.get('/', function(req, res) { res.json({'body': 123}); }); app.use(namespace + '/v1', router); };
当我访问它的路线
Error: Failed to lookup view "error" in views directory "/Volumes/api_service/init/views"
我试图一起删除视图引擎
//app.set('views', path.join(__dirname, 'views')); //app.set('view engine', 'jade');
但是这个错误大吼大叫
No default engine was specified and no extension was provided
如果你正在调用res.render
例如在'express generate'生成的error handling程序中,那么你会看到你描述的错误。 对于一个json API服务,你可能不需要渲染任何东西,所以不要调用render()
,而是调用res.send()
的状态res.status设置为404或500。
所以基本上,取代这个:
app.use(function(err, req, res, next) { res.render('error', { message: err.message, error: err }); });
有了这个:
app.use(function(err, req, res, next){ res.status(err.status || 500); res.send({ message: err.message, error: err }); return; });
最终是明确的通用捕获404使所有的路线不可用。
app.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); });
解除他解决它。