【问题标题】:Always return JSON data from ExpressJS default error handler始终从 ExpressJS 默认错误处理程序返回 JSON 数据
【发布时间】:2019-03-15 07:01:58
【问题描述】:

我正在使用 ExpressJS 构建 API 服务器。我想确保服务器始终使用 JSON 数据而不是 HTML 数据进行响应。对于我定义的所有自定义路由,我可以让服务器响应 JSON 数据。

但如果出现“找不到页面 (404)”或“内部服务器错误 (500)”等错误,服务器会以 HTML 内容进行响应。是否有任何内置配置设置允许以 JSON 格式做出这些响应?

我可以为此定义自定义错误处理程序,但我希望使用内置错误处理程序的功能,例如基于 NODE_ENV 隐藏堆栈跟踪。

【问题讨论】:

    标签: javascript node.js express


    【解决方案1】:

    根据 express 文档,您可以像这样处理每个 404 和 500 服务器错误以发送 json(或您喜欢的任何其他响应)

    发送 404 作为 json 响应,

    app.get('*', function(req, res){
        res.status(404).json({}); // <== YOUR JSON DATA HERE
    });
    

    对于 500 内部服务器错误,

    app.use(function (err, req, res, next) {
        console.error(err.stack)
        res.status(500).json({}) // <== YOUR JSON DATA HERE
    })
    

    希望有帮助!

    请按照这些参考资料了解更多信息

    【讨论】:

    • 感谢您的回复。如问题中所述,我可以定义自定义错误处理程序以返回 JSON 响应。但是,我希望使用内置错误处理程序的功能,例如基于 NODE_ENV 隐藏堆栈跟踪。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    相关资源
    最近更新 更多