.
├── README.md => 說明檔
├── api => 放置對應 router handler 處理 func
│ │ (controller角色,依需求可再細拆service 層,
│ │ 以防 controller 過肥 )
│ └── v1 => 區分版本
│ └── users.go
├── asset => 放置素材檔案
├── common 常用宣告放這
│ └── common_const
│ │ └── common_const.go => 設定常數
│ └── common_msg_id
│ └── common_msg_id.go=> 定義 response result
├── database => DB 操作(ex: migration、seeder)
│ ├── migrate
│ │ └── migrate.go => 執行 migrate 建立資料表
└── seeder => 建立測試資料
│ ├── common_seeder.go
│ └── seeder.go => 在 RunSeeder() 內,控制要建立哪些測試資料
├── env.yaml => 環境設定檔
├── go.mod
├── go.sum
├── handler => 各種 handler 處理
│ ├── handleError.go => 錯誤處理 func
│ └── handleValidate.go => 驗證處理 func
├── initialize => init 所有相關檔統一置放在此
│ ├── config.go => init 相關 struct
│ ├── env.go => 讀取環境設定檔,使用 viper
│ ├── initialize.go => 統一操作所有 init 檔
│ ├── logger.go => log 設定 ,使用 zap
│ ├── mysql.go => 連接 mysql DB,使用 gorm
│ ├── redis.go => 連接 redis,使用 go-redis
│ └── validateLang.go => 驗證器中文化
├── log => 置放 log 檔,可依需求將 log level 區分
│ ├── error
│ │ └── error.log
│ └── info
│ └── info.log
├── main.go
├── middleware => 置放中間件
│ └── jwt_auth.go => jwt middleware
├── model => 資料表結構的 struct 跟 DB CRUD 操作置放在此(依需求可再細拆 repository 層)
│ ├── gormModel.go => gorm struct 基本欄位
│ ├── model_setting.go => 取得 DB 連線
│ └── users.go => user example
├── router => 置放 API 路徑
│ └── router.go
├── test => 置放測試檔
└── util => 置放封裝工具
├── bcryptEncap => 字串加密核對
│ └── bcrypt.go
├── gin_response => 統一 response 輸出格式
│ └── gin_response.go
├── jwt_secret => jwt 操作
│ └── jwt_secret.go
├── mysql_manager => mysql
│ └── mysql_err_code.go
├── swagger_docs => swagger docs 使用
│ └── swag_params.go
├── track_time => 計算 func 程式時間
│ └── track_time.go
└── zap_logger => zap plugin
└── zapLogger.go
package | 說明 | 操作說明 |
---|---|---|
viper | Viper是一個配置設定文件、環境變量 | - |
zap | Zap 是一個快速、結構化、級別化的日誌庫,由 Uber 開發 | open |
gin zap middleware | Gin 框架封裝的 zap 日誌中間件 | - |
file-rotatelogs | Go 語言的日誌文件切割和彙整庫 | - |
crypto/bcrypt | 字串加密核對 | - |
gorm | Go 語言 ORM 庫,它支持 MySQL、PostgreSQL、SQLite 和 SQL Server 數據庫 | - |
go-sql-driver/mysql | MySQL 驅動,連接 MySQL 數據庫 | - |
jwt-go | JSON Web Token (JWT) 庫 | - |
validator | 驗證器用於驗證結構體和個別的數據 | - |
cors | 跨域請求的中間件 | - |
go-redis | go-redis 是 Redis 客户端库 | - |
gin-swagger | gin swagger 產生 API docs | open |