← 中文资源

简体中文版本

在边缘用 Zod 校验 API 负载

为请求体定义 zod schema,在处理函数运行前解析传入负载,失败时返回 400 与字段级错误映射。

阅读英文原文

处理前先校验

在中间件而非处理函数中解析 body。失败返回 400 与字段级错误映射;成功则用解析结果替换 body,处理函数看到的是带类型数据,不会因缺字段崩溃。

const result = schema.safeParse(req.body);
if (!result.success) {
  return res.status(400).json({ errors: result.error.flatten() });
}
req.body = result.data;

推导类型

用 z.infer 从 schema 得到 TypeScript 类型。处理函数参数有类型,字段拼写错误是编译错误。schema 同时是运行时校验与编译时类型的唯一真相。

type Input = z.infer<typeof schema>;
function handler(body: Input) { /* body.email is string */ }

预期结果

非法请求得到 400 与每字段一条消息,合法请求带类型到达处理函数,处理函数不再因缺字段或畸形字段崩溃。schema 同时驱动校验与类型。zod 只校验形状不校验授权,合法负载仍可能被禁止;带 refine 的 schema 每次解析都跑 refine,大数组上可能昂贵。