Skip to content

fantasyhh/docker-gin-project

Repository files navigation

这是我初学golang之后第一个用的框架,跟着煎鱼大佬学的,按部就班,收获了非常多,但之前也在Python中用过DjangoFlask等框架,学习的过程中也修改了一些东西:

  1. 修改数据库数据,默认为mysql的官方示例数据,数据多,好操作
  2. 把Post请求数据的格式换为application/json,这个更好理解好操作
  3. JWT认证我使用了第三方库作为中间件
  4. Response信息我遵循了rest风格,并不是所有请求都返回状态200,错误信息也简单做了修改,答题不变,具体看这边
  5. 增加了docker-compose配置以及相应的Makefile配置
  6. 增加了api_test文件作为单元测试
  7. 修改了部分配置文件名,遵循golint,如HttpPort改为HTTPPort
  8. 暂时没加log以及redis缓存,有空研究

TODO

  1. Redis 缓存
  2. gin日志系统

注意

  1. docker-compose配置文件夹为compose文件夹,额外的配置文件,数据库源文件等
  2. !!! docker-compose第一次启动 web以及nginx都会不成功,因为db服务会导入数据库源文件,因为里面数据记录较多需要等个半分钟,再手动启动web以及nginx服务,这只会在第一次的时候发生
  3. docker这边测试端口为8000,本地我改为了5000
  4. swagger为http://127.0.0.1:8000/swagger/index.html
  5. 如果不用docker必须自带mysq并导入相关数据

运行的话直接 docker-compose up -d

6.17更新

使用了官方示例的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没法存储到文件里

7.2更新

e/msg.go更新了新的error信息,看到并参考了jwt中间件中的源码定义,类似于:

ErrListProductFail = errors.New("展示所有产品失败")

7.3更新

修改部分语法,例如 将isExist == false改为!isExist,遵循golintgolangci-lint给的建议

About

my first project with gin, and "dokcer" it

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages