SuperAPI AI 工具集

backend-patterns

编程与开发

查看项目

更新于 10-15 11:42

技能介绍

本技能提供后端架构模式与可扩展服务端应用的最佳实践,面向 Node.js、Express 和 Next.js API 路由,内容以 TypeScript 代码示例为主,围绕多个主题展开。

API 设计模式:给出资源式 RESTful API 结构,包括列表资源、获取单个资源、创建资源、替换资源、更新资源和删除资源的 HTTP 方法与路径约定,并说明使用查询参数进行过滤、排序与分页,例如 status、sort、limit、offset。还包含仓库模式,通过接口抽象数据访问逻辑,并给出基于 Supabase 的仓库实现示例;以及服务层模式,将业务逻辑与数据访问分离,示例中包含向量搜索与按相似度排序的逻辑;另有中间件模式,用于构建请求/响应处理管道,示例为 withAuth 认证中间件。

数据库模式:介绍查询优化,建议只选择所需列并配合过滤、排序和限制条数,避免直接选择全部列;介绍 N+1 查询的预防方法,通过批量获取关联数据并用 Map 建立索引;介绍事务模式,示例通过 Supabase 的 RPC 调用数据库函数 create_market_with_position,在 SQL 函数中以 plpgsql 实现插入 markets 与 positions 并返回结果,异常时自动回滚。

缓存策略:介绍 Redis 缓存层,在读取单个资源时先查缓存,未命中则查数据库并写回缓存(示例过期时间 300 秒),并提供缓存失效方法;同时展示缓存旁路(Cache-Aside)模式的完整读取流程。

错误处理模式:提供集中式错误处理器,可识别自定义 ApiError 与 ZodError,分别返回对应状态码与错误详情,未预期错误记录日志并返回 500;还提供带指数退避的重试函数,默认最多重试 3 次,延迟为 1 秒、2 秒、4 秒。

认证与授权:展示 JWT 令牌校验,解析出 userId、email、role 等载荷,并在 API 路由中使用 requireAuth 获取用户;展示基于角色的访问控制,定义 read、write、delete、admin 权限以及 admin、moderator、user 三种角色的权限映射,并用 requirePermission 高阶函数包装处理函数,在权限不足时抛出 403。

限流:给出简单的内存限流器实现,按标识符(如请求头 x-forwarded-for 中的 IP)在时间窗口内统计请求次数,示例限制为每分钟 100 次,超出时返回 429。

后台任务与队列:给出简单队列模式,通过 add 添加任务、process 循环取出并执行任务,示例将市场索引任务入队以避免阻塞请求,并返回任务已入队。

日志与监控:给出结构化日志类,输出带时间戳、级别、消息及上下文的 JSON,提供 info、warn、error 方法,示例在 API 路由中为每个请求生成 requestId 并记录请求路径与错误堆栈。

适用场景:需要为基于 Node.js、Express 或 Next.js 的服务端应用设计可扩展、可维护的后端结构时,可作为模式参考。限制:资料中的示例依赖 Supabase、Redis、jsonwebtoken、zod 等第三方库,安装命令、收费或价格、运行环境与平台兼容性等具体信息暂未提供;使用时应根据自身复杂度选择合适的模式。