SuperAPI AI 工具集

nextjs-api-patterns

编程与开发

查看项目

更新于 10-15 22:41

技能介绍

用途:为 Next.js 应用提供构建稳健 API 层的参考模式,覆盖 Route Handlers 与 Server Actions 两条路径,重点在输入校验、错误处理、认证与限流。

主要能力: 一、Route Handler 设计。给出基础 CRUD 示例,包括 GET 分页(page/limit,limit 上限 100)、POST 创建、动态路由 [id] 的 GET/PUT/DELETE 及 204 返回。 二、Server Actions。用于表单提交与数据变更,示例含 "use server"、Zod safeParse、revalidatePath、redirect,以及客户端用 useActionState 管理错误与 isPending。 三、Zod 校验。建议在 lib/validations 集中定义 Schema,用 partial() 派生更新 Schema,并用 z.infer 导出类型。 四、错误处理。在 lib/api-utils.ts 封装 apiError、notFound、unauthorized、badRequest,返回统一 JSON 错误结构与状态码。 五、中间件。middleware.ts 中做登录态检查与重定向,并为 /api/ 设置 CORS 响应头,配合 config.matcher 限定路径。 六、认证。Route Handler 可用 next-auth v5 的 auth 包装函数,通过 request.auth 校验;Server Actions 中封装 requireAuth 抛错。 七、速率限制。提供基于 Map 的 checkRateLimit 示例,按 IP 与窗口计数,超限返回 429。

使用方式:按需将上述模式应用到 app/api 路由或 app 下的 actions.ts;安装命令与具体依赖版本资料未提供。

适用场景:需要为 Next.js App Router 项目建立统一校验、错误响应、鉴权与限流的 API 层。

限制:资料明确指出内存版限流仅用于演示,在 Serverless 或分布式环境(如 Vercel)中 Map 会随函数调用重置,生产应使用 Redis、Upstash 等持久化存储。同时列出反模式:用 Server Action 做读操作、缺少输入校验、静默吞掉错误、以及本可用 Server Action 却搭建 Route Handler。