SuperAPI AI 工具集

gin-api

编程与开发

查看项目

更新于 10-16 05:51

技能介绍

用途:用 Go 与 Gin 构建生产级 REST API,覆盖日常高频模式,包括服务器启动、路由、请求绑定、响应格式化与错误处理。

主要能力:

  • 分层项目结构:cmd/ 入口、internal/(handler/service/repository/domain)、pkg/(共享中间件),internal 用于禁止外部模块导入的代码,pkg 用于可复用中间件与工具。
  • 服务器启动与优雅关闭:使用 gin.New() 加显式中间件而非 gin.Default(),设置 ReadTimeout/WriteTimeout,用带缓冲 channel 监听 SIGINT/SIGTERM 并调用 srv.Shutdown。
  • 领域模型:结构体 json 标签控制输出,binding 标签做校验,如 required、email、min/max、oneof,PasswordHash 用 json:"-" 避免暴露。
  • 瘦处理器模式:handler 只绑定输入、调用 service、格式化响应,不写业务逻辑;支持 ShouldBindJSON、ShouldBindQuery、ShouldBindURI。强调必须用 ShouldBind*,因 Bind* 会自动返回 400,无法自定义错误响应。
  • 输入清理:绑定后对字符串做 TrimSpace、HTML 转义、邮箱转小写;文件上传用 filepath.Base 去除目录部分。
  • 集中错误处理:定义 AppError 与哨兵错误(404/401/403/409/422),用 errors.As 映射为 HTTP 响应,5xx 记录日志但不向客户端返回内部错误。
  • 并发安全:将 *gin.Context 传入 goroutine 前必须先 c.Copy()。
  • 路由注册:/health 健康检查无需鉴权,/api/v1 下分公开与受保护路由组。

参考文件:routing.md(路由分组、版本、分页、通配、文件上传、自定义校验器、请求大小限制)、middleware.md(CORS、slog 日志、限流、请求 ID、超时、恢复)、error-handling.md、websocket.md、rate-limiting.md。

相关技能:JWT 保护路由见 gin-auth;仓储注入见 gin-database;测试见 gin-testing;Docker 化见 gin-deploy。

限制:资料未提供安装命令、收费、平台或具体价格信息,暂未提供。