欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

背景

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

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

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

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

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

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

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

Group

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

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

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

這里返回的是結(jié)構(gòu)體指針類型*RouterGroup,這個結(jié)構(gòu)體類型其實就是路由組的意思。在這個路由組當中,實現(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中的一個方法,用于對請求進行分組。如下案例所示:

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去處理我們的請求,方便按照我們的請求進行分類,然后也方便我們進行開發(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)
}

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

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

相關(guān)文章

最新評論