接口数据校验需兼顾完整性(字段存在性)与合法性(类型及业务规则),应结合typescript静态类型与zod等运行时校验工具,对关键字段做非空与语义检查,并统一错误处理与降级策略。

校验接口返回数据的完整性与合法性,核心是两件事:检查字段是否存在(完整性),以及字段值是否符合预期类型和业务规则(合法性)。不能只靠 if (res.data) 这类简单判断,得有结构化、可维护的校验逻辑。
用 TypeScript 类型 + 运行时校验双保险
TypeScript 能在开发期提示字段缺失或类型错误,但无法阻止运行时拿到非法 JSON。所以需要搭配运行时校验:
- 定义清晰的响应类型(如
interface ApiResponse<t> { code: number; data: T; message: string; }</t>) - 对
data字段单独做结构校验,避免假设后端一定返回了全部字段 - 推荐使用轻量库如 Zod 或 Joi,比手写
typeof判断更可靠
关键字段必须存在且非空(完整性校验)
比如用户信息接口返回 { id, name, avatar },其中 id 和 name 是必填字段:
Java开发手册规约集合,基于阿里巴巴Java开发手册(嵩山版)。 涵盖7大维度:编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约。 当用户需要:(1) 编写或审查Java代码 (2) 检查命名/代码规范 (3) 处理异常和日志 (4) 编写单元测试 (5) 安全编码 (6) 数据库设...
- 检查字段是否为
undefined或null,而不仅是== null(避免把0、false、''误判为非法) - 对字符串字段额外检查
.trim().length > 0,防止空格占位 - 对数组字段检查
Array.isArray(val) && val.length > 0,避免后端返回null或[]
字段值需满足业务语义(合法性校验)
类型正确 ≠ 合法。例如 age: number 字段,还需确保它在合理范围内:
-
age应为整数且在0–150之间(可用Number.isInteger(age) && age >= 0 && age ) -
email字段需通过正则或validator.js校验格式,不能仅看是否为字符串 -
status若约定只取'active'/'inactive',就该用['active', 'inactive'].includes(status)显式约束
统一错误处理与降级策略
校验失败不等于直接报错,要区分场景处理:
- 关键字段缺失 → 视为接口异常,记录日志、上报监控、提示“数据加载失败”
- 非关键字段非法(如头像 URL 格式不对)→ 自动降级为默认头像,不影响主流程
- 所有校验建议封装成独立函数(如
validateUserProfile(res.data)),便于复用和单元测试
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










