express学习笔记5 - 自定义路由异常处理中间件
修改router/index.js,添加异常处理中间件
** * 自定义路由异常处理中间件 * 注意两点: * 第一,方法的参数不能减少 * 第二,方法的必须放在路由最后 */ router.use((err, req, res, next) => { console.log(err); const msg = (err && err.message) || "系统错误"; const statusCode = (err.output && err.output.statusCode) || 500; const errorMsg = (err.output && err.output.payload && err.output.payload.error) || err.message; res.status(statusCode).json({ code: CODE_ERROR, msg, error: statusCode, errorMsg, }); });
完整代码
const express = require("express"); const boom = require("boom"); const { CODE_ERROR } = require("../utils/constant"); // 注册路由 const router = express.Router(); router.get("/", function (req, res) { res.send("让我们开始express之旅"); }); /** * 集中处理404请求的中间件 * 注意:该中间件必须放在正常处理流程之后 * 否则,会拦截正常请求 */ router.use((req, res, next) => { // console.log(req,res) next(boom.notFound("接口不存在")); }); /** * 自定义路由异常处理中间件 * 注意两点: * 第一,方法的参数不能减少 * 第二,方法的必须放在路由最后 */ router.use((err, req, res, next) => { console.log(err); const msg = (err && err.message) || "系统错误"; const statusCode = (err.output && err.output.statusCode) || 500; const errorMsg = (err.output && err.output.payload && err.output.payload.error) || err.message; res.status(statusCode).json({ code: CODE_ERROR, msg, error: statusCode, errorMsg, }); }); module.exports = router;
创建 utils/constant:(为了方便后期统一维护,单独拉出来定义)
module.exports = { CODE_ERROR: -1 }
然后刷新
这就完成了
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
JAVA转go系列之我为什么要学习GO