这是我初学golang之后第一个用的框架,跟着煎鱼大佬学的,按部就班,收获了非常多,但之前也在Python中用过Django
,Flask
等框架,学习的过程中也修改了一些东西:
- 修改数据库数据,默认为mysql的官方示例数据,数据多,好操作
- 把Post请求数据的格式换为
application/json
,这个更好理解好操作 - JWT认证我使用了第三方库作为中间件
- Response信息我遵循了rest风格,并不是所有请求都返回状态200,错误信息也简单做了修改,答题不变,具体看这边
- 增加了
docker-compose
配置以及相应的Makefile
配置 - 增加了
api_test
文件作为单元测试 - 修改了部分配置文件名,遵循golint,如
HttpPort
改为HTTPPort
- 暂时没加log以及redis缓存,有空研究
- Redis 缓存
- gin日志系统
docker-compose
配置文件夹为compose文件夹,额外的配置文件,数据库源文件等- !!!
docker-compose
第一次启动 web以及nginx都会不成功,因为db服务会导入数据库源文件,因为里面数据记录较多需要等个半分钟,再手动启动web以及nginx服务,这只会在第一次的时候发生 - docker这边测试端口为8000,本地我改为了5000
- swagger为http://127.0.0.1:8000/swagger/index.html
- 如果不用docker必须自带mysq并导入相关数据
运行的话直接 docker-compose up -d
使用了官方示例的log配置
// Disable Console Color, you don't need console color when writing the logs to file.
gin.DisableConsoleColor()
// Logging to a file.
f, _ := os.Create("gin.log")
gin.DefaultWriter = io.MultiWriter(f)
但只有请求信息,自己的log.println
没法存储到文件里
e/msg.go
更新了新的error信息,看到并参考了jwt中间件中的源码定义,类似于:
ErrListProductFail = errors.New("展示所有产品失败")
修改部分语法,例如 将isExist == false
改为!isExist
,遵循golint
,golangci-lint
给的建议