自動(dòng)生成框架內(nèi)容可前往開(kāi)源項(xiàng)目gingen按如下命令執(zhí)行
mkdir testServer cd testServer ./gingen init --mod testServer
項(xiàng)目地址:github.com/Benny66/gin…
app
項(xiàng)目工程主要代碼文件夾目錄,包括api層、model模型數(shù)據(jù)層、service邏輯層;
api層請(qǐng)求入口處理,參數(shù)校驗(yàn),數(shù)據(jù)返回
model模型數(shù)據(jù)層是數(shù)據(jù)交互層,常見(jiàn)的數(shù)據(jù)庫(kù)操作方法,數(shù)據(jù)聚合方法
邏輯層是項(xiàng)目核心業(yè)務(wù)邏輯的處理層;
api層
api層連同schema模塊接受處理請(qǐng)求參數(shù),做數(shù)據(jù)校驗(yàn)、清洗返回等
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【模型數(shù)據(jù)層】
model就是對(duì)數(shù)據(jù)庫(kù)表名和表內(nèi)字段進(jìn)行模型定義的模塊。
ModelTime定義自動(dòng)轉(zhuǎn)換存儲(chǔ)和查詢時(shí)間格式
可定義模型對(duì)應(yīng)的表名稱(chēng)和表字段
dao 是基于gorm對(duì)數(shù)據(jù)進(jìn)行增刪查改的模塊,通過(guò)inteface接口暴露調(diào)用接口
Create和update 對(duì)數(shù)據(jù)的創(chuàng)建和修改操作均需要開(kāi)啟事務(wù),在邏輯層進(jìn)行控制開(kāi)啟、回滾和提交。
常見(jiàn)封裝的方法包括增刪查改、分頁(yè)查詢(Paginate)、查詢?nèi)浚‵indAll)、按條件查詢(WhereQuery)、關(guān)聯(lián)查詢(Joins)、預(yù)加載(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【邏輯層】是主要的代碼層,開(kāi)發(fā)人員基本上在這個(gè)模塊上進(jìn)行開(kāi)發(fā)和修復(fù)bug,實(shí)現(xiàn)各自項(xiàng)目的邏輯,是最核心的內(nèi)容
api模塊是對(duì)接路由的方法入口,基本上一個(gè)業(yè)務(wù)模塊對(duì)應(yīng)一個(gè)文件,例如登錄模塊的各接口可以命名為user.go
define模塊用于定義數(shù)據(jù)結(jié)構(gòu)類(lèi)型的目錄,不同的業(yè)務(wù)類(lèi)型和邏輯,需要定義不同的請(qǐng)求參數(shù)和返回參數(shù)結(jié)構(gòu),例如定義type UserLoginApiReq struct來(lái)接收登錄接口的參數(shù)類(lèi)型
service模塊,顧名思義就是業(yè)務(wù)邏輯服務(wù)的處理模塊,其中包括對(duì)請(qǐng)求數(shù)據(jù)參數(shù)的校驗(yàn)、業(yè)務(wù)邏輯處理數(shù)據(jù),調(diào)用數(shù)據(jù)層進(jìn)行保存數(shù)據(jù)庫(kù)
router.go對(duì)接路由,統(tǒng)一定義
config【系統(tǒng)配置】
系統(tǒng)的配置模塊,config.go,包括服務(wù)信息、數(shù)據(jù)庫(kù)信息、日志配置信息、ws配置信息等等
db【數(shù)據(jù)庫(kù)】
數(shù)據(jù)庫(kù)文件夾模塊,目前使用的mysql、redis數(shù)據(jù)存儲(chǔ)
migrations【數(shù)據(jù)遷移】
數(shù)據(jù)遷移文件模塊,項(xiàng)目初始化或升級(jí)的時(shí)候可進(jìn)行數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)遷移腳本命令;
需要在根目錄添加install.lock才可進(jìn)行數(shù)據(jù)庫(kù)遷移執(zhí)行
public【公共模塊】
項(xiàng)目的公共模塊,包括:image、html、css、js等文件
routers【路由】
啟動(dòng)web服務(wù)時(shí),初始化gin的路由模塊,啟動(dòng)服務(wù)
runtime
runtime模塊,保存日志logs、緩存cache等文件
utils
項(xiàng)目框架需要的工具包,包括:自我封裝的庫(kù)以及調(diào)用第三方封裝的庫(kù)
審核編輯:劉清
-
MySQL
+關(guān)注
關(guān)注
1文章
804瀏覽量
26528 -
Schema
+關(guān)注
關(guān)注
0文章
4瀏覽量
6465 -
Redis
+關(guān)注
關(guān)注
0文章
374瀏覽量
10871
原文標(biāo)題:基于gin的封裝的web服務(wù)框架升級(jí),新增自動(dòng)生成代碼并開(kāi)源倉(cāng)庫(kù)
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論