国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Golang > 正文

Go Web框架gin的入門教程

2020-04-01 18:57:24
字體:
來源:轉載
供稿:網友

目前,基于Go的web框架也可謂是百花齊放了,之所以選擇 gin ,沒其他原因,就只是因為其在github上的star數是最多的,而且僅僅從README看,其文檔也是相當豐富的。

安裝gin

直接使用 go get github.com/gin-gonic/gin 即可。

官方README中提供了非常多的例子。例如最簡單的實例代碼:

package mainimport "github.com/gin-gonic/gin"func main() { r := gin.Default() r.GET("/ping", func(c *gin.Context) { c.JSON(200, gin.H{  "message": "pong", }) }) r.Run() // listen and serve on 0.0.0.0:8080}

路由

router := gin.Default() // 默認是帶有Logger和Recovery中間件的router := gin.New() // 不帶中間件的路由router.Use(gin.Logger()) // 可以使用這種方式來指明中間件router.GET("/test", MyMiddleware(), testEndpoint) // 也可以用這種方式給指定路由添加中間件router.GET("/someGet", getting) // 支持所有Restful的操作// 帶參數的路由router.GET("/user/:name", func(c *gin.Context) { name := c.Param("name")})// 參數可選/通配符功能router.GET("/user/:name/*action", ...)// 路由分組v1 := router.Group("/v1"){  v1.POST("/login", loginEndpoint)  v1.POST("/submit", submitEndpoint)}v1.Use(AuthRequired()) {} // 路由分組單獨指定中間件

請求與響應

請求

// 獲取路由參數,假設有路由為"/user/:name"c.Params.ByName("name")// 獲取query參數c.Query("name")c.DefaultQuery("name", "Guest")// 獲取表單參數c.PostForm("name")c.DefaultPostForm("name")

參數綁定

請求驗證

響應

// 返回簡單的字符串c.String(200, "pong")// 返回JSON數據c.JSON(200, gin.H{  "message": "pong",})// 重定向c.Redirect(http.StatusMovedPermanently, "https://google.com")

中間件

自定義中間件

BasicAuth中間件

異步協程

gin可以借助協程來實現異步任務,但是這時候得手動copy上下文,并且只能是可讀取的。

router.GET("/async", func(c *gin.Context) {  cCp := c.Copy()  go func() {    time.Sleep(5 * time.Second)    log.Println("Done! in path" + cCp.Request.URL.Path)  }()})

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黄平县| 江城| 马公市| 巴林右旗| 昭通市| 竹溪县| 玉山县| 临泉县| 道真| 涟源市| 芷江| 东乌| 雅安市| 上饶县| 曲阳县| 漾濞| 定南县| 隆尧县| 文昌市| 六安市| 布拖县| 铁岭市| 汪清县| 津市市| 南投县| 宜兴市| 佛山市| 措勤县| 邯郸市| 凤城市| 浏阳市| 百色市| 河源市| 伊金霍洛旗| 济宁市| 木兰县| 南雄市| 通城县| 甘肃省| 滦南县| 龙胜|