golang web開發——gin實戰入門

背景

在之前的一系列golang入門小節中,我們也算管中窺豹,大概瞭解了一些golang,瞭解了它的基本語法,在之前的章節中,很多大佬留言或者私信我說,我寫的都太過簡單,充其量就是一個golang的demo,根本達不到企業級開發的要求,所以從這個小節開始的以下大概20個章節,我們都會講解golang的實戰學習,這個過程也是我自己學習或者複習的過程,希望在接下來的章節中,我們都會有所收穫


講真話,其實我也沒有在大型項目中,使用golang做過核心接口的開發,充其量也就是邊角料工程,那些可以練手的工程中使用golang進行開發,不過跟學習java一樣,都是從不會到會的嘛,也都是從模仿中慢慢有了自己對東西的理解,所以我也只有用類比學java的方式去學習golang的web開發,如果有不對的地方,還請golang的大佬指點,拍磚,講解


golang web開發——gin實戰入門


gin的簡介

現在golang web開發的框架比較多,有beego的,有gin的,不過聽很多業內大佬說,很多還是基於gin的,應該說gin比較輕量,完全是一個web層組件,我覺得可以類比spring mvc,而beego就是一套東西了,可以類比spring framework


golang web開發——gin實戰入門

gin的github地址,如果有需要的同學可以去github去看下,從它的star和fork數量來說,也可以側面看出golang語言的火爆,和gin框架的優秀

https://github.com/gin-gonic/gin


gin版的hello world

1.打開goland新建project

golang web開發——gin實戰入門

2.新建一個main.go,從gin官網的Quick start中把代碼複製到main函數中就可以了

golang web開發——gin實戰入門

3.運行main函數

golang web開發——gin實戰入門

從啟動日誌中可以看出,這邊會有一個get請求的映射,並且會在8080端口監聽,使用postman測試一下,發現可以訪問,到此為止,一個最簡單的gin的hello world就搞定了,非常簡單

golang web開發——gin實戰入門

像使用spring boot的方式使用gin

可能我自己理解的不到位,但是從我的角度看來,gin的企業級使用方式與java中的spring boot有很多相似的地方,您可以按照我如下的步驟來搭建我們第一個gin的企業級系統,先簡單的看下我們最後搭建完的系統骨架圖,從骨架圖中看來,gin也是需要進行分層開發的,否則所有代碼都在main函數中進行維護,在日常真實開發過程中,是完全不可行的


golang web開發——gin實戰入門


1.和spring boot一樣使用main函數作為啟動整個系統的入口,這種風格和spring boot非常像,就一個很簡單的啟動代碼,整個項目就開始從這裡生根發芽,我們可以看到,這邊調用了routers包下的Routers方法

golang web開發——gin實戰入門

2.routers這個包下的所有方法,感覺就跟spring boot的controller層一樣,定義了方法的映射,和對應邏輯的具體處理類,因為這個是示例代碼,接下來的實戰課程,我們將搭建一個電影管理系統,不要看這個low,所有的項目都是慢慢從low變牛逼,雖然我也不保證這個項目能夠有多牛,但是做實戰,總要有一個合適的場景,我們定義瞭如果用戶請求/movie/get/:id這樣的restful風格的請求URL的時候,將會交給GetMovieById這個方法處理

golang web開發——gin實戰入門

3.GetMovieById這個方法,可以類比我們spting boot的service層,是處理業務的主要核心邏輯區,因為本小節只是一個入門的,並沒有包含實際的業務邏輯處理,這邊就寫了一個靜態的默認數據就返回了

golang web開發——gin實戰入門


4.在實際項目中,dao層就是我們這個項目中的model層了,雖然目前這個剛剛搭建的demo項目中,並沒有什麼操作數據庫的地方,dao層只定義了一個movie的簡單結構,但是接下來的課程中,我們會補充這塊操作數據庫的代碼,到時候在細說其中的思想

golang web開發——gin實戰入門

5.啟動工程,訪問localhost:8080/movie/get/3

golang web開發——gin實戰入門


到此為止,一個簡單的工程就搭建完成了,雖然非常簡單,但是整個項目的骨架已經初具規模了,葉酸是麻雀雖小五臟俱全,接下來的,我們就會按照套路,一步步去完善整個項目


下一個小節將整合swagger,spring boot有swagger,golang同樣也能夠得到swagger的支持,如果你對本系列的文章感興趣,麻煩加一個關注,亦或者素質三連,感謝您的支持


分享到:


相關文章: