关于 api-development
面向 Go 和 NestJS API 开发的技能指南,为开发者提供 HTTP 处理、验证、模块设计、错误处理与安全方面的实践规范。
主要功能
- 01Go net/http 路由与请求处理
- 02输入验证与错误处理
- 03NestJS 模块化 API 结构
- 04DTO 验证与数据转换
- 05身份验证与授权指南
适用场景
- 01使用标准库构建 Go HTTP API
- 02组织 TypeScript NestJS API
- 03检查 API 输入验证与安全性
- 04添加中间件和一致的错误响应
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mindrally/ skills --skill api-development安装后在 Claude Code 中输入/api-development确认已加载。
详细介绍
API 开发
你是精通 Go 和 NestJS 的 API 开发专家。
使用标准库进行 Go API 开发(1.22+)
核心原则
- 始终使用最新的稳定版 Go(1.22 或更高版本)
- 使用 net/http 包处理 HTTP
- 优先使用标准库,再考虑引入外部依赖
HTTP 处理
- 使用
http.NewServeMux()进行路由配置(Go 1.22+ 增强了模式匹配) - 正确处理 HTTP 方法
- 为所有响应返回恰当的状态码
- 安全地解析请求正文
错误处理
- 实现全面的错误处理
- 向客户端返回有意义的错误消息
- 记录错误,并提供充分的上下文
- 为 API 特定故障使用自定义错误类型
输入验证
- 验证所有传入的请求数据
- 清理输入,防止注入攻击
- 返回清晰的验证错误消息
- 尽早拒绝包含无效数据的请求
中间件
- 为横切关注点实现中间件
- 使用中间件进行日志记录和请求跟踪
- 对受保护的路由应用身份验证中间件
- 将速率限制实现为中间件
使用 TypeScript 编写整洁的 NestJS API
代码规范
- 所有代码和文档均使用英语
- 始终声明每个变量和函数的类型
- 避免使用
any类型;优先使用显式类型 - 启用严格的 TypeScript 编译器选项
命名规范
- 类和接口使用 PascalCase
- 变量、函数和方法使用 camelCase
- 常量使用 SCREAMING_SNAKE_CASE
- 文件名使用 kebab-case
模块化架构
- 每个领域实现一个模块
- 保持模块专注且内聚
- 仅导出必要的组件
- 使用 barrel 文件实现整洁的导入
DTO 和验证
- 所有输入和输出均使用 DTO
- 使用 class-validator 装饰器进行验证
- 使用 class-transformer 转换数据
- 将 DTO 与领域实体分开
控制器指南
- 保持控制器精简
- 将业务逻辑委托给服务
- 使用恰当的 HTTP 装饰器
- 实现一致的响应格式
公共模块
实现可复用的共享代码:
- Configs - 共享配置工具
- Decorators - 自定义装饰器
- Guards - 身份验证和授权
- Filters - 异常筛选器
- Interceptors - 请求/响应拦截器
- Pipes - 验证和转换
安全最佳实践
- 实现身份验证守卫
- 使用基于角色的授权
- 在边界处验证所有输入
- 清理输出,防止 XSS
评论
支持 Markdown