91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于gin封裝的web服務(wù)框架升級

馬哥Linux運(yùn)維 ? 來源:馬哥Linux運(yùn)維 ? 2023-12-05 09:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

自動生成框架內(nè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層請求入口處理,參數(shù)校驗(yàn),數(shù)據(jù)返回

model模型數(shù)據(jù)層是數(shù)據(jù)交互層,常見的數(shù)據(jù)庫操作方法,數(shù)據(jù)聚合方法

邏輯層是項(xiàng)目核心業(yè)務(wù)邏輯的處理層;

api層

api層連同schema模塊接受處理請求參數(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就是對數(shù)據(jù)庫表名和表內(nèi)字段進(jìn)行模型定義的模塊。

ModelTime定義自動轉(zhuǎn)換存儲和查詢時間格式

可定義模型對應(yīng)的表名稱和表字段

dao 是基于gorm對數(shù)據(jù)進(jìn)行增刪查改的模塊,通過inteface接口暴露調(diào)用接口

Create和update 對數(shù)據(jù)的創(chuàng)建和修改操作均需要開啟事務(wù),在邏輯層進(jìn)行控制開啟、回滾和提交。

常見封裝的方法包括增刪查改、分頁查詢(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【邏輯層】是主要的代碼層,開發(fā)人員基本上在這個模塊上進(jìn)行開發(fā)和修復(fù)bug,實(shí)現(xiàn)各自項(xiàng)目的邏輯,是最核心的內(nèi)容

api模塊是對接路由的方法入口,基本上一個業(yè)務(wù)模塊對應(yīng)一個文件,例如登錄模塊的各接口可以命名為user.go

define模塊用于定義數(shù)據(jù)結(jié)構(gòu)類型的目錄,不同的業(yè)務(wù)類型和邏輯,需要定義不同的請求參數(shù)和返回參數(shù)結(jié)構(gòu),例如定義type UserLoginApiReq struct來接收登錄接口的參數(shù)類型

service模塊,顧名思義就是業(yè)務(wù)邏輯服務(wù)的處理模塊,其中包括對請求數(shù)據(jù)參數(shù)的校驗(yàn)、業(yè)務(wù)邏輯處理數(shù)據(jù),調(diào)用數(shù)據(jù)層進(jìn)行保存數(shù)據(jù)庫

router.go對接路由,統(tǒng)一定義

config【系統(tǒng)配置】

系統(tǒng)的配置模塊,config.go,包括服務(wù)信息、數(shù)據(jù)庫信息、日志配置信息、ws配置信息等等

db【數(shù)據(jù)庫】

數(shù)據(jù)庫文件夾模塊,目前使用的mysql、redis數(shù)據(jù)存儲

migrations【數(shù)據(jù)遷移】

數(shù)據(jù)遷移文件模塊,項(xiàng)目初始化或升級的時候可進(jìn)行數(shù)據(jù)庫的數(shù)據(jù)庫遷移腳本命令;

需要在根目錄添加install.lock才可進(jìn)行數(shù)據(jù)庫遷移執(zhí)行

public【公共模塊】

項(xiàng)目的公共模塊,包括:image、html、css、js等文件

routers【路由】

啟動web服務(wù)時,初始化gin的路由模塊,啟動服務(wù)

runtime

runtime模塊,保存日志logs、緩存cache等文件

utils

項(xiàng)目框架需要的工具包,包括:自我封裝的庫以及調(diào)用第三方封裝的庫






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • MySQL
    +關(guān)注

    關(guān)注

    1

    文章

    860

    瀏覽量

    27941
  • Schema
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    6576
  • Redis
    +關(guān)注

    關(guān)注

    0

    文章

    387

    瀏覽量

    11445

原文標(biāo)題:基于gin的封裝的web服務(wù)框架升級,新增自動生成代碼并開源倉庫

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    【米爾-全志T113-i開發(fā)板試用】4、使用Gin框架搭建簡易的web server和提供設(shè)備信息獲取接口

    快速的路由功能、中間件支持、參數(shù)解析、JSON/XML響應(yīng)等功能,使得編寫Web應(yīng)用變得簡單和高效。可以使用Gin框架來構(gòu)建RESTful API、Web
    發(fā)表于 02-22 16:23

    五大Python Web框架詳解

    用于Python的、簡單而非常有用的Web框架,其主要作用是以盡可能少的操作將Web服務(wù)器與Python代碼連接,其功能包括內(nèi)置的分析功能、靈活的插件系統(tǒng)以及一次運(yùn)行多個HTTP
    發(fā)表于 02-06 17:17

    Web框架使用哪些編程語言?

    實(shí)現(xiàn)js在服務(wù)器端的編譯,而且擁有更好的組織代碼,提升復(fù)用性,非常適合在分布式設(shè)備上運(yùn)行數(shù)據(jù)密集型的實(shí)時應(yīng)用。2. PHPPHP是Web架構(gòu)開發(fā)常用語言,PHP開發(fā)了很多Web框架,如
    發(fā)表于 03-28 16:53

    主流web前端技術(shù)框架

    Web架構(gòu)是為解決Web開發(fā)中開放性問題而設(shè)計(jì)的具有一定約束性的支撐結(jié)構(gòu),使用框架可以幫助快速實(shí)現(xiàn)Web開發(fā),并解決開發(fā)過程中遇到的常規(guī)問題!以下是2018年常用的
    發(fā)表于 03-28 16:56

    Web網(wǎng)絡(luò)服務(wù)模塊實(shí)現(xiàn)程序自動升級功能

    Web網(wǎng)絡(luò)服務(wù)模塊——下載升級文件
    發(fā)表于 04-03 10:55

    尋找!嵌入式linux利用web服務(wù)升級

    利用http搭建一個服務(wù)器,通過web端操作,+后臺服務(wù)端+終端升級嵌入式linux通過服務(wù)端后臺對設(shè)備進(jìn)行遠(yuǎn)程
    發(fā)表于 06-24 11:11

    基于工作流技術(shù)的復(fù)合語義Web服務(wù)框架

    隨著Internet和Web應(yīng)用的快速發(fā)展,Web應(yīng)用模式及Web服務(wù)的異構(gòu)和分散問題日益突出,如何復(fù)合繁復(fù)而龐大的Web
    發(fā)表于 03-31 10:01 ?16次下載

    一種支持QoS約束的語義Web服務(wù)發(fā)現(xiàn)框架

    針對當(dāng)前語義Web服務(wù)發(fā)現(xiàn)缺乏OoS約束的問題,構(gòu)建一個支持QoS約束的語義Web服務(wù)發(fā)現(xiàn)框架。使用QoS認(rèn)證中心確保QoS信息的動態(tài)更新。
    發(fā)表于 03-31 10:17 ?10次下載

    基于Web 服務(wù)的應(yīng)用集成框架的研究和應(yīng)用

    文中闡述了企業(yè)信息化的現(xiàn)狀及其存在的問題,并分析了傳統(tǒng)企業(yè)應(yīng)用集成(EAI)的不足和缺陷,提出了基于Web 服務(wù)的應(yīng)用集成框架(WS-EAI)。并對WS-EAI 框架組成進(jìn)行了系統(tǒng)闡
    發(fā)表于 05-25 13:55 ?10次下載

    基于WSDM的Web服務(wù)管理框架設(shè)計(jì)與實(shí)現(xiàn)

    隨著Web 服務(wù)的廣泛應(yīng)用,監(jiān)控和管理這些IT 資源的需求也變得越來越迫切。為了對Web 服務(wù)進(jìn)行有效的管理,OASIS 組織提出了Web
    發(fā)表于 01-15 17:04 ?14次下載

    基于擴(kuò)展UDDI語義Web服務(wù)發(fā)現(xiàn)框架的研究

    傳統(tǒng)Web服務(wù)采用簡單分類和關(guān)鍵字的服務(wù)發(fā)現(xiàn)方法,造成查準(zhǔn)率與查全率低。語義Web服務(wù)Web
    發(fā)表于 02-25 16:03 ?19次下載

    面向Web服務(wù)的電力系統(tǒng)信息集成平臺框架的研究白雨

    面向Web服務(wù)的電力系統(tǒng)信息集成平臺框架的研究_白雨
    發(fā)表于 03-15 08:00 ?0次下載

    Web服務(wù)組合匹配框架研究

    在現(xiàn)有服務(wù)發(fā)現(xiàn)方法中,單一考慮原子服務(wù)服務(wù)組合的方式難以滿足用戶日益增長的需求。針對該問題,設(shè)計(jì)一個基于模型轉(zhuǎn)換的Web服務(wù)匹配
    發(fā)表于 03-05 13:35 ?0次下載
    <b class='flag-5'>Web</b><b class='flag-5'>服務(wù)</b>組合匹配<b class='flag-5'>框架</b>研究

    基于用戶社群關(guān)系的Web服務(wù)發(fā)現(xiàn)系統(tǒng)框架

    。基于形式化后的社群關(guān)系提出了一個差分式服務(wù)發(fā)現(xiàn)策略,構(gòu)建了一個基于用戶社群關(guān)系的Web服務(wù)發(fā)現(xiàn)系統(tǒng)框架,按照Web
    發(fā)表于 03-07 14:18 ?0次下載
    基于用戶社群關(guān)系的<b class='flag-5'>Web</b><b class='flag-5'>服務(wù)</b>發(fā)現(xiàn)系統(tǒng)<b class='flag-5'>框架</b>

    在micropython上搭建web框架web服務(wù)——新生代web框架:mpy-urouter

    大家好!之前我給 micropython 開發(fā)過一個名為 micro-route 的web框架,在使用的過程中發(fā)現(xiàn)這個框架在設(shè)計(jì)上有很多的缺陷,而且是經(jīng)過一個星期的時間趕工出來的,代碼質(zhì)量不太
    發(fā)表于 12-29 18:56 ?5次下載
    在micropython上搭建<b class='flag-5'>web</b><b class='flag-5'>框架</b>和<b class='flag-5'>web</b><b class='flag-5'>服務(wù)</b>——新生代<b class='flag-5'>web</b><b class='flag-5'>框架</b>:mpy-urouter
    主站蜘蛛池模板: 三级毛片在线看 | 国产成人啪午夜精品网站男同 | 性欧美69| 狠狠干人人干 | 久久狠狠色噜噜狠狠狠狠97 | 毛片录像| 久久久久99精品成人片三人毛片 | 婷婷五月色综合香五月 | 午夜寂寞在线一级观看免费 | 谁有毛片网站 | 欧美精品hdvideosex| 免费观看三级毛片 | 一道精品一区二区三区 | 日本写真高清视频免费网站网 | 美女又黄又免费的视频 | 欧美三级小视频 | 在线观看亚洲人成网站 | 午夜男人天堂 | 黄色短视频免费看 | 亚洲视频在线一区二区三区 | 中文字幕一区二区三区四区五区人 | 日本成人资源 | 婷婷激情亚洲 | 黄 色 录像成 人播放免费 | 久久婷婷国产综合精品 | 色噜噜亚洲精品中文字幕 | 国产一区二区三区在线观看影院 | 日本色午夜 | 国产黄色精品 | 男人的j桶女人的j视频 | 久久久久女人精品毛片 | 亚洲啪啪免费视频 | 亚洲国产成人精品不卡青青草原 | 亚洲区视频在线观看 | 日本大片免费播放网站 | 欧美视频三区 | 国模视频一区二区 | 免看一级a毛片一片成人不卡 | 亚洲欧美色一区二区三区 | 一级片视频在线观看 | 久久久久国产成人精品亚洲午夜 |