go語言web開發框架 gin

2021-08-19 23:34:31 字數 2768 閱讀 8867

gin是乙個golang的微框架,具有快速靈活,容錯方便等特點。go語言本身的net/http就已經很簡單強大,框架更像是一些常用函式或者工具的集合。借助框架開發,不僅可以省去很多常用的封裝帶來的時間,也有助於團隊的編碼風格和形成規範。

首先安裝gin:

go get gopkg.in/gin-gonic/gin.v1
gin版hello world!!

}gin的路由來自httprouter庫。

func main())

}

獲取get請求引數:

func main())

router.run()

}

使用c.defaultquery方法讀取引數,其中當引數不存在的時候,提供乙個預設值。(只作用於key不存在的時候,提供預設值。)

獲取post請求引數:

func main(),

"message": message,

"nick": nick,

})})

}

c.json返回json字串,gin.h是乙個json封裝工具。

檔案上傳:

}和原生的net/http方法類似,不同在於gin把原生的request封裝到c.request中了。

router.loadhtmlglob("templates/*")

router.get("/upload", func(c *gin.context) )

})

使用loadhtmlglob定義模板檔案路徑。

為了應對不同的http的報文體傳輸資料型別(例如,, 

multipart/form-data) 

gin還提供了更加高階方法,c.bind,它會更加content-type自動推斷是bind表單還是json的引數。

gin對於重定向的請求,呼叫上下文的redirect方法:

router.get("/redict/google", func(c *gin.context) )
讓你的**邏輯更加模組化,同時分組也易於定義中介軟體的使用範圍。

v1 := router.group("/v1")

v1.get("/login", func(c *gin.context) )

v2 := router.group("/v2")

v2.get("/login", func(c *gin.context) )

需要注意的是中介軟體只對註冊過的路由函式起作用。對於分組路由,巢狀使用中介軟體,可以限定中介軟體的作用範圍。中介軟體分為全域性中介軟體,單個路由中介軟體和群組中介軟體。

全域性中介軟體:

先定義乙個中介軟體函式:

func middleware() gin.handlerfunc 

}

router.use(middleware()))})

}

使用router裝飾中介軟體,然後在/middlerware即可讀取request的值,注意在router.use(middleware())**以上的路由函式,將不會有被中介軟體裝飾的效果。

單個路由中介軟體:

router.get("/before", middleware(), func(c *gin.context) )

})

群組中介軟體:

authorized := router.group("/", mymiddelware())

// 或者這樣用:

authorized := router.group("/")

authorized.use(mymiddelware())

使用中介軟體註冊之後,將會先執行中介軟體中的邏輯,然後才到處理器

邏輯。gin不僅可以使用框架本身的router進行run,也可以配合使用net/http本身的功能:

func main() 

s.listenandserve()

}

參考:

Go語言Web框架 Gin框架的安裝和基本使用

系統環境 linux centos 7.2 go語言版本 1.14.1 建立工程目錄test mkdir p gopath src test 進入到目錄 cd gopath src test 建立test.go檔案 vim test.go 寫入測試程式 儲存退出 wq 執行命令 go mod ini...

go開源web框架gin的簡單使用

部落格結構體 字段首字母必須大寫,否則gin不能獲取到值返回給前端 json name 配置轉json時字段的名字 type blog struct var bloglist blog func initbloglist bloglist bloglist,blog bloglist bloglis...

go開源web框架gin的簡單使用

部落格結構體 字段首字母必須大寫,否則gin不能獲取到值返回給前端 json name 配置轉json時字段的名字 type blog struct var bloglist blog func initbloglist func main get引數查詢指定id的部落格,curl localhos...