最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Golang使用Gin框架實現(xiàn)路由分類處理請求流程詳解

 更新時間:2023年05月16日 11:01:29   作者:富士康質(zhì)檢員張全蛋  
Gin是一個golang的微框架,封裝比較優(yōu)雅,具有快速靈活,容錯方便等特點,這篇文章主要介紹了Golang使用Gin框架實現(xiàn)路由分類處理請求,感興趣的同學(xué)可以參考下文

在前面已經(jīng)學(xué)習(xí)了gin框架如何處理請求,解析請求,返回數(shù)據(jù)。

在實際的項目當(dāng)中,項目往往是以模塊化來進(jìn)行劃分和開發(fā)的,所謂的模塊化就是按照功能來劃分,比如會有產(chǎn)品模塊,會有用戶模塊,會將用戶相關(guān)的進(jìn)行統(tǒng)一的開發(fā),放到用戶模塊當(dāng)中,和產(chǎn)品相關(guān)的放在產(chǎn)品相關(guān)的模塊當(dāng)中,這樣即方便開發(fā)者進(jìn)行統(tǒng)一的開發(fā)也方便在系統(tǒng)的維護(hù)過程當(dāng)中方便維護(hù)。

背景

在實際的項目開發(fā)中,均是模塊化開發(fā)。同一模塊內(nèi)的功能接口,往往會有相同的接口前綴。比如如下所示:

例如在系統(tǒng)中有用戶模塊,用戶有不同注冊、登錄、用戶信息

比如注冊是register接口,它屬于是用戶模塊,因此會在register前面有一個字段,這個字段表示的是用戶模塊是user模塊,第二級的url register才表示用戶模塊下注冊的功能。

第一級是用戶的模塊,第二級代表該模塊下面的什么功能。刪除是刪除用戶的id。

類似這種接口前綴統(tǒng)一,均屬于相同模塊的功能接口??梢允褂寐酚山M進(jìn)行分類處理。

可以看到不同的接口是按照兩級的分類來定義的。

類似這種接口前綴統(tǒng)一,均屬于相同模塊的功能接口??梢允褂寐酚山M進(jìn)行分類處理。

Group

所謂的路由組就是這些接口的前綴第一級都是以user開頭,表示都是屬于同一個模塊,既然都是屬于同一個模塊,那么能不能對其進(jìn)行統(tǒng)一的處理呢?當(dāng)然可以,可以使用group進(jìn)行劃分,就是路由組。

group方法默認(rèn)有兩個參數(shù),第一個參數(shù)是分組的url是分組的第一級,也就是模塊名稱。第二個參數(shù)是可變類型的參數(shù),這里可以不需要填。

func (group *RouterGroup) Group(relativePath string, handlers ...HandlerFunc) *RouterGroup

這里返回的是結(jié)構(gòu)體指針類型*RouterGroup,這個結(jié)構(gòu)體類型其實就是路由組的意思。在這個路由組當(dāng)中,實現(xiàn)了很多的方法,這些方法都是這個接口里面的。

type IRoutes interface {
    Use(...HandlerFunc) IRoutes
    Handle(string, string, ...HandlerFunc) IRoutes
    Any(string, ...HandlerFunc) IRoutes
    GET(string, ...HandlerFunc) IRoutes
    POST(string, ...HandlerFunc) IRoutes
    DELETE(string, ...HandlerFunc) IRoutes
    PATCH(string, ...HandlerFunc) IRoutes
    PUT(string, ...HandlerFunc) IRoutes
    OPTIONS(string, ...HandlerFunc) IRoutes
    HEAD(string, ...HandlerFunc) IRoutes
    StaticFile(string, string) IRoutes
    StaticFileFS(string, string, http.FileSystem) IRoutes
    Static(string, string) IRoutes
    StaticFS(string, http.FileSystem) IRoutes
}

gin框架中可以使用路由組來實現(xiàn)對路由的分類。路由組是router.Group中的一個方法,用于對請求進(jìn)行分組。如下案例所示:

register和login info都是對應(yīng)著不同的請求類型。

package main
import (
	"fmt"
	"github.com/gin-gonic/gin"
)
func main() {
	engine := gin.Default()
	routeGroup := engine.Group("/user")
	routeGroup.POST("/register", func(c *gin.Context) {
		fullPath := "用戶注冊" + c.FullPath()
		fmt.Println(fullPath)
		c.Writer.WriteString(fullPath)
	})
	engine.Run()
}

在多路由的分組處理,可以使用engine.Group去處理我們的請求,方便按照我們的請求進(jìn)行分類,然后也方便我們進(jìn)行開發(fā)。

package main
import (
	"fmt"
	"github.com/gin-gonic/gin"
)
func main() {
	engine := gin.Default()
	routeGroup := engine.Group("/user")
	routeGroup.POST("/register",registerHandler)
	routeGroup.POST("/login", loginHandler)
	routeGroup.DELETE("/:id", deleteHandler)
	engine.Run()
}
func registerHandler(c *gin.Context) {
	fullPath := "用戶注冊" + c.FullPath()
	fmt.Println(fullPath)
	c.Writer.WriteString(fullPath)
}
func loginHandler(c *gin.Context) {
	fullPath := "用戶登入" + c.FullPath()
	fmt.Println(fullPath)
	c.Writer.WriteString(fullPath)
}
func deleteHandler(c *gin.Context) {
	fullPath := "用戶刪除" + c.FullPath()
	userID := c.Param("id")
	fmt.Println(fullPath)
	c.Writer.WriteString(fullPath + " userID:" + userID)
}

在實際的過程當(dāng)中設(shè)計到多模塊的開發(fā)那么就可以使用路由分組的功能,會大大的提高開發(fā)效率。提高代碼的可讀性。

到此這篇關(guān)于Golang使用Gin框架實現(xiàn)路由分類處理請求流程詳解的文章就介紹到這了,更多相關(guān)Go路由分類處理請求內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go語言中實現(xiàn)enum枚舉的方法詳解

    Go語言中實現(xiàn)enum枚舉的方法詳解

    枚舉,即?enum,可用于表示一組范圍固定的值,它能助我們寫出清晰、安全的代碼,那么你是否了解過?Go?中的枚舉呢?下面就跟隨小編一起來學(xué)習(xí)一下Go語言中實現(xiàn)enum枚舉的常用方法吧
    2024-02-02
  • Go項目配置管理神器之viper的介紹與使用詳解

    Go項目配置管理神器之viper的介紹與使用詳解

    viper是一個完整的?Go應(yīng)用程序的配置解決方案,它被設(shè)計為在應(yīng)用程序中工作,并能處理所有類型的配置需求和格式,下面這篇文章主要給大家介紹了關(guān)于Go項目配置管理神器之viper的介紹與使用,需要的朋友可以參考下
    2023-02-02
  • 在Golang中實現(xiàn)RSA算法的加解密操作詳解

    在Golang中實現(xiàn)RSA算法的加解密操作詳解

    RSA 是一種非對稱加密算法,廣泛使用于數(shù)據(jù)的安全傳輸,crypto/rsa 是 Golang 中實現(xiàn)了 RSA 算法的一個標(biāo)準(zhǔn)庫,提供了生成公私鑰對、加解密數(shù)據(jù)、簽名和驗簽等功能,本文給大家介紹了在Golang中實現(xiàn)RSA算法的加解密操作,需要的朋友可以參考下
    2023-12-12
  • 源碼分析Go語言中g(shù)ofmt實現(xiàn)原理

    源碼分析Go語言中g(shù)ofmt實現(xiàn)原理

    gofmt?是?Go?語言官方提供的一個工具,用于自動格式化?Go?源代碼,使其符合?Go?語言的官方編碼風(fēng)格,本文給大家源碼詳細(xì)分析了Go語言中g(shù)ofmt實現(xiàn)原理,并通過圖文和代碼講解的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • Golang程序漏洞檢測器govulncheck的安裝和使用

    Golang程序漏洞檢測器govulncheck的安裝和使用

    govulncheck 是一個命令行工具,可以幫助 Golang 開發(fā)者快速找到項目代碼和依賴的模塊中的安全漏洞,該工具可以分析源代碼和二進(jìn)制文件,識別代碼中對這些漏洞的任何直接或間接調(diào)用,本文就給大家介紹一下govulncheck安裝和使用,需要的朋友可以參考下
    2023-09-09
  • Golang實現(xiàn)超時退出的三種方式

    Golang實現(xiàn)超時退出的三種方式

    這篇文章主要介紹了Golang三種方式實現(xiàn)超時退出,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • Go語言中的init函數(shù)特點及用法詳解

    Go語言中的init函數(shù)特點及用法詳解

    在Go語言中,init()函數(shù)是一種特殊的函數(shù),用于在程序啟動時自動執(zhí)行一次。它的存在為我們提供了一種機(jī)制,可以在程序啟動時進(jìn)行一些必要的初始化操作,為程序的正常運行做好準(zhǔn)備,在這篇文章中,我們將詳細(xì)探討init()函數(shù)的特點、用途和注意事項
    2023-06-06
  • go?mod?tidy命令的使用

    go?mod?tidy命令的使用

    gomodtidy命令是Go語言中用于管理項目依賴的工具,主要功能包括移除未使用的依賴項、添加缺失的依賴項以及更新go.sum文件以確保依賴項的正確校驗,感興趣的可以了解一下
    2024-11-11
  • Go結(jié)合反射將結(jié)構(gòu)體轉(zhuǎn)換成Excel的過程詳解

    Go結(jié)合反射將結(jié)構(gòu)體轉(zhuǎn)換成Excel的過程詳解

    這篇文章主要介紹了Go結(jié)合反射將結(jié)構(gòu)體轉(zhuǎn)換成Excel的過程詳解,大概思路是在Go的結(jié)構(gòu)體中每個屬性打上一個excel標(biāo)簽,利用反射獲取標(biāo)簽中的內(nèi)容,作為表格的Header,需要的朋友可以參考下
    2022-06-06
  • go語言數(shù)據(jù)結(jié)構(gòu)之前綴樹Trie

    go語言數(shù)據(jù)結(jié)構(gòu)之前綴樹Trie

    這篇文章主要介紹了go語言數(shù)據(jù)結(jié)構(gòu)之前綴樹Trie,文章圍繞主題展開詳細(xì)內(nèi)容介紹,具有一定得參考價值,需要的小伙伴可以參考一下
    2022-05-05

最新評論

峨眉山市| 曲松县| 措勤县| 双江| 贵港市| 南涧| 蒙自县| 宜阳县| 宾川县| 钟山县| 屏东市| 准格尔旗| 高青县| 原阳县| 泸溪县| 茂名市| 黄冈市| 孟津县| 莲花县| 论坛| 志丹县| 大邑县| 合肥市| 沧源| 京山县| 彭水| 荣成市| 莱西市| 津南区| 益阳市| 眉山市| 大洼县| 仁怀市| 文化| 于田县| 湛江市| 庄河市| 江门市| 班玛县| 光泽县| 财经|