始终从 ExpressJS 默认错误处理程序返回 JSON 数据

Viv*_*vek 7 javascript node.js express

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

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

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

Jan*_*ith 7

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

发送 404 作为 json 响应,

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

对于 500 Internal server error ,

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

希望有帮助!

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

  • 谢谢回复。正如问题中提到的,我可以定义自定义错误处理程序来返回 JSON 响应。但是,我希望使用内置错误处理程序的功能,例如基于 NODE_ENV 隐藏堆栈跟踪。 (4认同)