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
}
然后刷新http://localhost:8000/user

这就完成了

相关推荐
可耳(keer)25 分钟前
MIT线性代数第三讲笔记
笔记·线性代数
菜菜why1 小时前
MSPM0G3507学习笔记(二) 超便捷配置led与按键
笔记·单片机·电赛·msp430
MrGaomq1 小时前
软件测试用例(二)
linux·c语言·c++·经验分享·笔记·测试用例
霖霖7141 小时前
linux系统驱动的原理
linux·笔记·学习
虾球xz1 小时前
CppCon 2016 学习:Parallelism in Modern C++
开发语言·c++·学习
无名小猴2 小时前
Charpter14-Business Logic Vulnerabilities
学习
紫青宝剑2 小时前
Pydantic 学习与使用
学习
小庞在加油3 小时前
从零到一:C语言基础入门学习路线与核心知识点全解析
c语言·开发语言·学习
大信团队—跨境TRO3 小时前
【25-cv-06522】Keith律所代理Helen Marie Wells版权图
笔记·跨境电商·亚马逊·侵权维权·tro
..过云雨3 小时前
03.【C语言学习笔记】分支和循环
c语言·笔记·学习