自動生成框架內容可前往開源項目gingen按如下命令執行
mkdir testServer cd testServer ./gingen init --mod testServer
項目地址:github.com/Benny66/gin…
app
項目工程主要代碼文件夾目錄,包括api層、model模型數據層、service邏輯層;
api層請求入口處理,參數校驗,數據返回
model模型數據層是數據交互層,常見的數據庫操作方法,數據聚合方法
邏輯層是項目核心業務邏輯的處理層;
api層
api層連同schema模塊接受處理請求參數,做數據校驗、清洗返回等
type UserInterface interface { Login(context *gin.Context) Refresh(context *gin.Context) Logout(context *gin.Context) UpdatePassword(context *gin.Context) } var UserApi UserInterface = &userApi{} type userApi struct{}
model【模型數據層】
model就是對數據庫表名和表內字段進行模型定義的模塊。
ModelTime定義自動轉換存儲和查詢時間格式
可定義模型對應的表名稱和表字段
dao 是基于gorm對數據進行增刪查改的模塊,通過inteface接口暴露調用接口
Create和update 對數據的創建和修改操作均需要開啟事務,在邏輯層進行控制開啟、回滾和提交。
常見封裝的方法包括增刪查改、分頁查詢(Paginate)、查詢全部(FindAll)、按條件查詢(WhereQuery)、關聯查詢(Joins)、預加載(Preloads)等等方法
func (dao *userDao) Create(tx *gorm.DB, data *model.User) (rowsAffected int64, err error) { db := tx.Create(data) if err = db.Error; db.Error != nil { return } rowsAffected = db.RowsAffected return } func (dao *userDao) WhereQuery(query interface{}, args ...interface{}) *userDao { return &userDao{ dao.gm.Where(query, args...), } } func (dao *userDao) Joins(query string, args ...interface{}) *userDao { return &userDao{ dao.gm.Joins(query, args), } }
service【邏輯層】
service【邏輯層】是主要的代碼層,開發人員基本上在這個模塊上進行開發和修復bug,實現各自項目的邏輯,是最核心的內容
api模塊是對接路由的方法入口,基本上一個業務模塊對應一個文件,例如登錄模塊的各接口可以命名為user.go
define模塊用于定義數據結構類型的目錄,不同的業務類型和邏輯,需要定義不同的請求參數和返回參數結構,例如定義type UserLoginApiReq struct來接收登錄接口的參數類型
service模塊,顧名思義就是業務邏輯服務的處理模塊,其中包括對請求數據參數的校驗、業務邏輯處理數據,調用數據層進行保存數據庫
router.go對接路由,統一定義
config【系統配置】
系統的配置模塊,config.go,包括服務信息、數據庫信息、日志配置信息、ws配置信息等等
db【數據庫】
數據庫文件夾模塊,目前使用的mysql、redis數據存儲
migrations【數據遷移】
數據遷移文件模塊,項目初始化或升級的時候可進行數據庫的數據庫遷移腳本命令;
需要在根目錄添加install.lock才可進行數據庫遷移執行
public【公共模塊】
項目的公共模塊,包括:image、html、css、js等文件
routers【路由】
啟動web服務時,初始化gin的路由模塊,啟動服務
runtime
runtime模塊,保存日志logs、緩存cache等文件
utils
項目框架需要的工具包,包括:自我封裝的庫以及調用第三方封裝的庫
審核編輯:劉清
-
MySQL
+關注
關注
1文章
819瀏覽量
26643 -
Schema
+關注
關注
0文章
4瀏覽量
6480 -
Redis
+關注
關注
0文章
376瀏覽量
10896
原文標題:基于gin的封裝的web服務框架升級,新增自動生成代碼并開源倉庫
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論