gin-tmpl

module
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 22, 2022 License: MIT

README

Go Template With Gin

gin-tmpl

基于 Gin 框架以及 GORM 构建的后端 API 服务。

项目开始前,使用 Goland 打开 go.mod,选中 module 名,右键选择 Refactor 重构为新项目的 module 名

项目结构规范依据 Standard Go Project Layout 进行约束。

主要功能

  • 项目整体使用 golangci-lint 进行较为严格的静态代码检查,其配置文件为 .golangci-lint.yml
  • 基于 Gin 实现的 API 服务
  • 接口参数验证依赖 validator v10,详细用法可查阅文档
  • 引入了跨域,记录请求和响应,pprof 以及 prometheus metrics 的中间件
  • API 参数校验及自定义翻译
  • 基于 GORMMySQL 读写分离
  • 基于 jaeger 实现链路追踪
  • 基于 zap 以及 lumberjack 的日志记录及切割,支持通过 HTTP 请求动态调整日志级别
  • 基于 saramaKafka 生产者和消费者,可按需使用或删除。Kafka 集群最低支持 0.8.2.0 版本。
  • swagger2.0 文档
  • 演示的单元测试用例

注意事项

关于配置文件

目录 configs,支持使用环境变量覆盖配置文件中的配置项。即,优先从环境变量中获取对应的配置,当环境变量没有时,使用配置文件中的默认配置。

若要查看所有支持的环境变量,可执行 go run cmd/app/main env 命令

若没有配置如下配置项

  • service_name,则默认值为 gin-demo
  • local_ip,则默认值为 0.0.0.0
  • api_port,则默认值为 8000

run_mode 为 debug,Gin 会运行在 debug 模式,在生产环境中,更换为任意值,则可以运行在 release 模式

模版根据 configs/dev.yaml 中的配置,默认启动 jaeger tracer,MySQL client,Kafka client,可根据项目需要删除对应配置屏蔽对应客户端。

项目若需要添加自己的配置文件,可修改 internal/config/config.go,添加需要的配置结构体,并在配置文件中默认的 base 节点同级新增配置内容。

关于编译

vendor 目录默认从项目中忽略,为加速 CI 中的编译速度,可以考虑将 vendor 添加到实际项目中

关于 Swagger 文档

首先需要电脑本地有命令 swag,若不存在,请使用

go get -u github.com/swaggo/swag/cmd/swag

# 1.16 or newer
go install github.com/swaggo/swag/cmd/swag@latest

下载安装。

当文档更新后,使用 swag init -g ./cmd/app/main.go 进行更新

文档地址: ip:port/swagger/index.html

Directories

Path Synopsis
cmd
app
Package docs GENERATED BY THE COMMAND ABOVE; DO NOT EDIT This file was generated by swaggo/swag
Package docs GENERATED BY THE COMMAND ABOVE; DO NOT EDIT This file was generated by swaggo/swag
internal
app
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL