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

这就完成了
相关文章:
express学习笔记5 - 自定义路由异常处理中间件
修改router/index.js,添加异常处理中间件 *** 自定义路由异常处理中间件* 注意两点:* 第一,方法的参数不能减少* 第二,方法的必须放在路由最后*/ router.use((err, req, res, next) > {console.log(err);const msg (err &…...
filebeat介绍
1、filebeat概述 Filebeat是用于转发和集中日志数据的轻量级传送工具。Filebeat监视您指定的日志文件或位置,收集日志事件,并将它们转发到Elasticsearch或 Logstash或kafka进行索引 1.1 Filebeat两个主要组件 prospector 和 harvester。 prospector&a…...
使用SSM框架实现个人博客管理平台以及实现Web自动化测试
文章目录 前言1. 项目概述2. 项目需求2.1功能需求2.2 其他需求2.3 系统功能模块图 3. 开发环境4. 项目结构5. 部分功能介绍5.1 数据库密码密文存储5.2 统一数据格式返回5.3 登录拦截器 6. 项目展示7. 项目测试7.1 测试用例7.2 执行部分自动化测试用例 前言 在几个月前实现了一…...
【深度学习】MAT: Mask-Aware Transformer for Large Hole Image Inpainting
论文:https://arxiv.org/abs/2203.15270 代码:https://github.com/fenglinglwb/MAT 文章目录 AbstractIntroductionRelated WorkMethod总体架构卷积头Transformer主体Adjusted Transformer Block Multi-Head Contextual Attention Style Manipulation Mo…...
PyTorch BatchNorm2d详解
通常和卷积层,激活函数一起使用...
慕课网Go-4.package、单元测试、并发编程
package 1_1_User.go package usertype User struct {Name string }1_1_UserGet.go package userfunc GetCourse(c User) string {return c.Name }1_1_UserMain.go package mainimport ("fmt"Userch03 "goproj/IMOOC/ch03/user"//别名,防止同名…...
[JavaWeb]SQL介绍-DDL-DML
SQL介绍-DDL-DML 一.SQL简介1.简介2.SQL通用语法3.SQL语言的分类 二.DDL-操作数据库与表1.DDL操作数据库2.DDL操作表①.查询表(Retrieve)②.创建表(Create)③.修改表(Update)④.删除表(Delete) 三.Navicat的安装与使用四.DML-操作表数据1.添加(Insert)2.修改(Update)3.删除(Del…...
git源码安装(无sudo权限)
git源码安装(无sudo权限) 下载源码解压安装添加到环境变量 下载源码 去https://mirrors.edge.kernel.org/pub/software/scm/git/下载需要的版本。我下载的是2.41.0版本 wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.41.0.tar.gz解…...
Web3 叙述交易所授权置换概念 编写transferFrom与approve函数
前文 Web3带着大家根据ERC-20文档编写自己的第一个代币solidity智能合约 中 我们通过ERC-20一种开发者设计的不成文规定 也将我们的代币开发的很像个样子了 我们打开 ERC-20文档 我们transfer后面的函数就是transferFrom 这个也是 一个账号 from 发送给另一个账号 to 数量 val…...
Redis系列二:Clion+MAC+Redis环境搭建
1. ClionMACRedis-3.0-annotated环境搭建 参考: https://github.com/huangz1990/redis-3.0-annotated https://gitee.com/dumpcao/redis-3.0-annotated-cmake-in-clion https://tool.4xseo.com/a/12910.html 1.1 下载并导入Clion git clone https://gitee.com/dum…...
Linux下 Docker容器引擎基础(2)
目录 创建私有仓库 将修改过的nginx镜像做标记封装,准备上传到私有仓库 将镜像上传到私有仓库 从私有仓库中下载镜像到本地 CPU使用率 CPU共享比例 CPU周期限制 CPU 配额控制参数的混合案例 内存限制 Block IO 的限制 限制bps 和iops 创建私有仓库 仓库&a…...
现场服务管理系统有哪些?5个现场服务管理软件对比
现场售后服务管理软件的使用者通常是机械设备、家电、仪表仪器、医疗器械等厂商的工程师和客服调度人员。现场售后服务管理软件可将服务过程标准化,包括工单派发、服务过程步骤、配件订购出货和付款、客户评价都有系统支持,有的现场售后服务软件还支持数…...
leetcode 912.排序数组
⭐️ 题目描述 🌟 leetcode链接:排序数组 思路: 此题如果使用冒泡插入选择这些时间复杂度 O ( N 2 ) O(N^2) O(N2) 的算法会超时,使用快排 优化也过不去,因为里面有一个测试用例全是 2 即使加了三数取中也会是 O (…...
利用MMPreTrain微调图像分类模型
前言 MMPreTrain是一款基于PyTorch的开源深度学习预工具箱,是OpenMMLab项目的成员之一MMPreTrain的主要特性有: 支持多元化的主干网络与预训练模型支持多种训练策略(有监督学习,无监督学习,多模态学习等)提…...
express学习笔记3 - 三大件
便于统一管理router,创建 router 文件夹,创建 router/index.js: const express require(express)// 注册路由 const router express.Router() router.get(/,function(req,res){res.send(让我们开始express之旅) }) /*** 集中处理404请求的…...
Java课题笔记~Maven基础
2、Maven 基础 2.1 Maven安装与配置 下载安装 配置:修改安装目录/conf/settings.xml 本地仓库:存放的是下载的jar包 中央仓库:要从哪个网站去下载jar包 - 阿里云的仓库 2.2 创建Maven项目...
三步问题(力扣)n种解法 JAVA
目录 题目:1、dfs:2、dfs 备忘录(剪枝):(1)神器 HashMap 备忘录:(2)数组 memo 备忘录: 3、动态规划:4、利用 static 的储存功能:&…...
flask---》登录认证装饰器/配置文件/路由系统
登录认证装饰器 # 0 装饰器的本质原理-# 类装饰器:1 装饰类的装饰器 2 类作为装饰器 # 1 装饰器使用位置,顺序 # 3 flask路由下加装饰器,一定要加endpoint-如果不指定endpoint,反向解析的名字都是函数名,不加装饰器…...
Jvm实际运行情况-JVM(十七)
上篇文章说jmap和jstat的命令,如何查看youngGc和FullGc耗时和次数。 Jmap-JVM(十六) Jvm实际运行情况 背景: 机器配置:2核4G JVM内存大小:2G 系统运行天数:7天 期间发生FULL GC次数和耗时…...
【BASH】回顾与知识点梳理(二)
【BASH】回顾与知识点梳理 二 二. Shell 的变量功能2.1 什么是变量?2.2 变量的取用与设定: echo, 变量设定规则: set/unset2.3 环境变量的功能用 set 观察所有变量 (含环境变量与自定义变量)export: 自定义变量转成环境变量那如何将环境变量转成自定义变…...
LLVM Pass快速入门(四):代码插桩
代码插桩项目需求:在函数运行时打印出运行的函数名项目目录如下/MyProject ├── CMakeLists.txt # CMake 配置文件 ├── build/ #构建目录 │ └── test.c #测试编译代码 └── mypass3.cpp # pass 项目代码一,测试代码示例test.c#include <…...
3种高效方案破解NCM格式限制:从单文件到批量处理的完整指南
3种高效方案破解NCM格式限制:从单文件到批量处理的完整指南 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾为网易云音乐的NCM加密格式而烦恼?当你想要在非网易生态设备上播放已购买音乐时࿰…...
生信分析效率翻倍:fastp多线程+UMI处理技巧全解析(含实战案例)
生信分析效率翻倍:fastp多线程UMI处理技巧全解析(含实战案例) 在肿瘤基因检测和ctDNA测序领域,数据预处理环节往往成为整个分析流程的瓶颈。传统工具在处理海量测序数据时,不仅耗时长达数小时,还经常面临内…...
开源扩展开发指南:构建个性化Notion工作空间
开源扩展开发指南:构建个性化Notion工作空间 【免费下载链接】notion-enhancer an enhancer/customiser for the all-in-one productivity workspace notion.so 项目地址: https://gitcode.com/gh_mirrors/no/notion-enhancer 在数字化工作环境日益复杂的今天…...
3D Face HRN快速上手:无需代码,Gradio界面三步完成人脸重建
3D Face HRN快速上手:无需代码,Gradio界面三步完成人脸重建 1. 从一张照片到3D人脸,只需三步点击 你是否曾想过,将一张普通的自拍照或证件照,瞬间转化为一张可用于3D建模、游戏角色或虚拟形象的“皮肤地图”…...
YOLOv9镜像快速上手:一行命令跑通推理,小白也能玩转目标检测
YOLOv9镜像快速上手:一行命令跑通推理,小白也能玩转目标检测 1. 为什么选择YOLOv9镜像 目标检测作为计算机视觉的核心任务,在安防监控、自动驾驶、工业质检等领域有着广泛应用。而YOLO系列模型以其速度快、精度高的特点,成为该领…...
OpenClaw学习路径:从nanobot镜像入门到开发自定义技能
OpenClaw学习路径:从nanobot镜像入门到开发自定义技能 1. 为什么选择OpenClaw作为自动化助手 第一次听说OpenClaw时,我正在为重复性的文件整理工作头疼。作为一个经常需要处理大量技术文档的开发者,每天要花费数小时在机械的文件分类、重命…...
SPI Flash时序参数详解:如何用Synopsys VIP验证Micron芯片的HOLD时序
SPI Flash时序验证实战:Synopsys VIP在Micron芯片HOLD时序分析中的应用 当硬件验证工程师面对SPI Flash芯片时,时序参数的精确验证往往是项目成败的关键。Micron作为主流存储芯片供应商,其SPI Flash产品广泛应用于嵌入式系统和FPGA设计中&…...
深入解析visualization_msgs::Marker:从基础到实战应用
1. visualization_msgs::Marker是什么? 如果你正在用ROS做机器人开发,肯定遇到过这样的需求:想让机器人在rviz里显示一些自定义的图形,比如路径规划时的参考线、传感器检测到的障碍物轮廓,甚至是简单的文字提示。这时候…...
OpenClaw多模型调度方案:GLM-4.7-Flash与本地小模型协同工作
OpenClaw多模型调度方案:GLM-4.7-Flash与本地小模型协同工作 1. 为什么需要多模型协同 去年冬天,当我第一次尝试用OpenClaw自动化处理周报时,发现一个尴尬的现象:用GLM-4.7-Flash这样的大模型处理简单表格整理,就像用…...
