用途:为 Go 服务提供 REST 与 gRPC API 设计模式参考,强调 API 是长期契约,应按需维护多年的标准来设计。
主要能力:
- HTTP 处理器结构:基于标准 http.Handler 接口,处理器作为带依赖的结构体方法,直接写入 ResponseWriter,错误在处理器内部处理;提供 respondJSON 与 respondError 辅助函数。
- 中间件模式:使用 func(http.Handler) http.Handler 签名,示例含 RequestID 与 Recoverer;推荐顺序为 Recoverer → RequestID → Logger → Auth → RateLimit → Handler,Recover 必须最外层。
- 请求校验:解码与校验一步完成,使用 validate 标签;通过 http.MaxBytesReader 限制请求体大小(示例 1 MB)。
- URL 与命名约定:资源用复数名词、多词路径用 kebab-case、JSON 字段用 camelCase、版本放 URL 路径(/api/v1/...)、URL 中不用动词。
- 分页:提供 PageRequest 与 PageResponse 泛型结构,大数据集优先游标分页而非 offset/limit。
- 优雅关闭:http.Server 配置读写与空闲超时,监听 SIGINT/SIGTERM,用带超时的 Shutdown 关闭;程序应只在 main() 中退出。
- 健康检查:/healthz 存活检查,/readyz 就绪检查(依赖不可用时返回 503)。
- 错误响应格式:统一 error 对象,含 code、message、details;内部错误不得泄露给客户端。
使用方式:资料以代码示例形式给出各模式,可直接参考其中的处理器、中间件、校验、分页与关闭写法。
适用场景:Go 后端服务的 API 设计与实现。
限制:资料未提供安装命令、依赖版本、gRPC 具体示例、收费或平台信息,暂未提供。