Go 語(yǔ)言最流行了兩個(gè)輕量級(jí) Web 框架分別是 Gin 和 Echo,這兩個(gè)框架大同小異,都是插件式輕量級(jí)框架,背后都有一個(gè)開(kāi)源小生態(tài)來(lái)提供各式各樣的小插件,這兩個(gè)框架的性能也都非常好,裸測(cè)起來(lái)跑的飛快。本節(jié)我們只講 Gin 的實(shí)現(xiàn)原理和使用方法,Gin 起步比 Echo 要早,市場(chǎng)占有率要高一些,生態(tài)也豐富一些。
路由樹(shù)
在 Gin 框架中,路由規(guī)則被分成了最多 9 棵前綴樹(shù),每一個(gè) HTTP Method對(duì)應(yīng)一棵「前綴樹(shù)」,樹(shù)的節(jié)點(diǎn)按照 URL 中的 / 符號(hào)進(jìn)行層級(jí)劃分,URL 支持 :name 形式的名稱匹配,還支持 *subpath 形式的路徑通配符 。
每個(gè)節(jié)點(diǎn)都會(huì)掛接若干請(qǐng)求處理函數(shù)構(gòu)成一個(gè)請(qǐng)求處理鏈 HandlersChain。當(dāng)一個(gè)請(qǐng)求到來(lái)時(shí),在這棵樹(shù)上找到請(qǐng)求 URL 對(duì)應(yīng)的節(jié)點(diǎn),拿到對(duì)應(yīng)的請(qǐng)求處理鏈來(lái)執(zhí)行就完成了請(qǐng)求的處理。