express-validator 7.3.x 教程导航

本系列面向 Express 5 + TypeScript 项目,基于当前工程安装的 express-validator@7.3.2 和官方 7.3 文档编写。

为什么需要 express-validator

TypeScript 只能检查服务端源码,不能保证客户端真的按接口类型发送数据:

interface CreateWishBody {
  name: string;
  content: string;
}

客户端仍然可能发送:

{
  "name": 100,
  "content": null,
  "isAdmin": true
}

express-validator 的职责是验证和清洗 HTTP 边界上的不可信数据。

HTTP 请求
  → express.json()/urlencoded()
  → ValidationChain/checkSchema
  → validationResult()
  → matchedData()
  → Controller
  → Service
  → Sequelize/MySQL

学习顺序

  1. 01 基础与执行流程
  2. 02 ValidationChain 高频 API
  3. 03 ValidationChain 进阶
  4. 04 错误结果与 matchedData
  5. 05 checkSchema
  6. 06 ExpressValidator 类
  7. 07 组合校验与手动执行
  8. 08 项目最佳实践

使用频率速查

每个项目都会用

body / query / param
isString / isInt / isLength / isEmail / notEmpty
optional / bail / withMessage
trim / toInt / normalizeEmail
validationResult / matchedData

经常使用

custom / customSanitizer / if / exists
isArray / isObject
checkSchema / checkExact / oneOf
字段通配符 items.*.id

特定场景使用

ExpressValidator
hide / default / replace / not
globstar (**)
手动运行 ValidationChain.run(req)

三层边界

层次 负责什么 例子
express-validator HTTP 输入是否合法 page 是否为正整数
Service 当前操作是否允许 用户是否有权修改愿望
MySQL 最终数据约束 NOT NULL、唯一键、外键

校验通过不代表业务一定成功,也不能代替数据库约束。

官方参考