autosnippet
Version:
Extract code patterns into a knowledge base for AI coding assistants
41 lines (40 loc) • 1.46 kB
TypeScript
/**
* validate.ts — Express Zod 校验中间件
*
* 用法:
* import { validate, validateQuery } from '../middleware/validate.js';
* router.post('/batch-enable', validate(BatchEnableBody), async (req, res) => { ... });
* router.get('/search', validateQuery(SearchQuery), async (req, res) => { ... });
*
* 校验通过后:
* - req.body / req.query 被替换为 Zod parse 后的数据(已应用 defaults + coercion)
* - handler 中直接使用,类型安全
*
* 校验失败:
* - 返回 400 + 结构化 VALIDATION_ERROR(包含 fieldErrors / formErrors)
*
* @module http/middleware/validate
*/
import type { NextFunction, Request, Response } from 'express';
import type { z } from 'zod';
/**
* 校验 req.body 的中间件工厂
*
* @param schema Zod schema(通常为 z.object)
* @returns Express 中间件
*/
export declare function validate<T extends z.ZodType>(schema: T): (req: Request, res: Response, next: NextFunction) => void;
/**
* 校验 req.query 的中间件工厂
*
* @param schema Zod schema
* @returns Express 中间件
*/
export declare function validateQuery<T extends z.ZodType>(schema: T): (req: Request, res: Response, next: NextFunction) => void;
/**
* 校验 req.params 的中间件工厂
*
* @param schema Zod schema
* @returns Express 中间件
*/
export declare function validateParams<T extends z.ZodType>(schema: T): (req: Request, res: Response, next: NextFunction) => void;