gin + gorm
. ├── Makefile # 编译脚本 ├── README.md ├── admin.sh # 启动脚本 管理启动、重启、停止和查看运行状态等命令 ├── conf # 配置文件目录 │ └── config.yaml # 配置文件 ├── config # 处理配置和配置文件的go代码 │ └── config.go ├── db.sql # mysql脚本 ├── docs # swagger文档,执行swag init生成 │ ├── docs.go │ ├── swagger.json │ └── swagger.yaml ├── go-api-example ├── go.mod ├── go.sum ├── handler # 控制器逻辑 │ ├── handler.go │ ├── sd # 健康检查控制器 │ │ └── check.go │ └── user # 用户模块控制器 │ ├── create.go │ ├── delete.go │ ├── get.go │ ├── list.go │ ├── login.go │ ├── update.go │ └── user.go # 存放用户业务所有接口 接收json消息体 的struct ├── main.go # go程序唯一入口 ├── model # 数据库相关操作,包括数据库初始化和对表的增删改查 │ ├── init.go # 初始化和连接数据库 │ ├── model.go # 放公用的结构体 │ └── user.go # 用户相关的CURD ├── pkg # 引用的包 │ ├── auth # 认证 │ │ └── auth.go │ ├── constvar # 常量 │ │ └── constvar.go │ ├── errno # 错误码 │ │ ├── code.go │ │ └── errno.go │ ├── token # jwt │ │ └── token.go │ └── version # 版本包 │ ├── base.go │ ├── doc.go │ └── version.go ├── router # 路由相关处理 │ ├── middleware # 中间件 │ │ ├── auth.go │ │ ├── header.go │ │ ├── logging.go │ │ └── requestid.go │ └── router.go # 路由 ├── service # 业务处理 │ └── user.go └── util # 工具类函数存放目录 ├── util.go └── util_test.go
- API服务器状态检查
- 登录用户
- 新增用户
- 删除用户
- 更新用户
- 获取指定用户的详细信息
- 获取用户列表
- 配置文件读取
- 日志库的使用
- 数据库的CURD
- 自定义错误信息
- 读取和返回http请求
- 中间件
- api身份验证:jwt
- 给api添加版本功能
- Makefile
- swagger使用
- 单元测试
- api性能分析
# 初始化go mod go mod init go-api-example # 下载gin go get -u github.com/gin-gonic/gin # 下载gopsutil包 go get -u github.com/shirou/gopsutil # 启动服务 go run main.go 或 go build main.go ./main 或 make ./go-api-example # 访问 curl http://localhost:8080/home/health
curl -XPOST -H "Content-Type: application/json" http://127.0.0.1:8080/v1/user # 响应 没有传入参数返回 errno.ErrBind错误 {"error":{"Code":10002,"Message":"Error occurred while binding the request body to the struct."}} curl -XPOST -H "Content-Type: application/json" http://127.0.0.1:8080/v1/user -d'{"username":"admin"}' # 响应 {"code":10001,"message":"password is empty"} curl -XPOST -H "Content-Type: application/json" http://127.0.0.1:8080/v1/user -d'{"password":"admin"}' # 响应 {"code":20102,"message":"用户不存在 This is add message."} curl -XPOST -H "Content-Type: application/json" http://127.0.0.1:8080/v1/user -d'{"username":"admin","password":"admin"}' # 响应 {"code":0,"message":"OK"}