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); }); 

解除他解决它。