表达js 4如何提供json结果而不呈现任何视图/ CSS [英] express js 4 how to serve json results without rendering any views /css
问题描述
我正在使用express 4来创建一个json API服务。
我似乎无法定义它发送一个简单的json而不尝试渲染视图。
I am using express 4 in order to create a json API service. I can't seem to define it to send a simple json without trying to render the view.
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"
我试图一起删除视图引擎
I tried to remove the views engine all together
//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生成的错误处理程序,那么你看到你所描述的错误。对于json API服务,你可能不需要渲染任何东西,所以只需不要调用 render()
,而是调用 res.send()
,其状态res.status设置为404或500.
If you're making any calls to res.render
such as in an error handler that are generated by the 'express generate', then you'll see the error you described. For a json API service you probably don't need to render anything so just don't call render()
, instead call res.send()
with the status res.status set to 404 or 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;
});
这篇关于表达js 4如何提供json结果而不呈现任何视图/ CSS的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!