Go 語(yǔ)言最流行了兩個(gè)輕量級(jí) Web 框架分別是 Gin 和 Echo晌区,這兩個(gè)框架大同小異摩骨,都是插件式輕量級(jí)框架通贞,背后都有一個(gè)開源小生態(tài)來(lái)提供各式各樣的小插件,這兩個(gè)框架的性能也都非常好恼五,裸測(cè)起來(lái)跑的飛快昌罩。本節(jié)我們只講 Gin 的實(shí)現(xiàn)原理和使用方法,Gin 起步比 Echo 要早灾馒,市場(chǎng)占有率要高一些茎用,生態(tài)也豐富一些。
路由樹
在 Gin 框架中睬罗,路由規(guī)則被分成了最多 9 棵前綴樹轨功,每一個(gè) HTTP Method對(duì)應(yīng)一棵「前綴樹」,樹的節(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í)羡滑,在這棵樹上找到請(qǐng)求 URL 對(duì)應(yīng)的節(jié)點(diǎn),拿到對(duì)應(yīng)的請(qǐng)求處理鏈來(lái)執(zhí)行就完成了請(qǐng)求的處理算芯。