表达js 4如何提供json结果而不呈现任何视图/ CSS [英] express js 4 how to serve json results without rendering any views /css

查看:116
本文介绍了表达js 4如何提供json结果而不呈现任何视图/ 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆