Gin 高性能web框架入門第一章

  1. Gin 概述;
    python

       (1).Gin 是一個 go 寫的 web 框架,具備高性能的優勢。官方地址:https://github.com/gin-gonic/gin linux


  2. 部署Gin 框架:git

    注意:github

       1.提早部署go環境設置好GOPATH 環境變量;web


2.1 獲取Gin 框架軟件包;app

   go get -u github.com/gin-gonic/gin

   import "github.com/gin-gonic/gin"


3.Gin 第一個示例;框架

package main

import (
   "github.com/gin-gonic/gin"
)
func main() {
   r := gin.Default()
   r.GET("/", func(c *gin.Context) {
      c.JSON(200, gin.H{
         "message": "Hello World!",
      })
   })
   r.Run()
}


4.請求返回示例;ide

image.png

5.獲取路徑的參數;post

func main() {
    router := gin.Default()

    // 此規則可以匹配/user/john這種格式,但不能匹配/user/ 或 /user這種格式
    router.GET("/user/:name", func(c *gin.Context) {
        name := c.Param("name")
        c.String(http.StatusOK, "Hello %s", name)
    })

    // 可是,這個規則既能匹配/user/john/格式也能匹配/user/john/send這種格式
    // 若是沒有其餘路由器匹配/user/john,它將重定向到/user/john/
    router.GET("/user/:name/*action", func(c *gin.Context) {
        name := c.Param("name")
        action := c.Param("action")
        message := name + " is " + action
        c.String(http.StatusOK, message)
    })

    router.Run(":8080")
}

6.獲取GET參數;性能

func main() {    router := gin.Default()

    // 匹配的url格式:  /welcome?firstname=Jane&lastname=Doe
    router.GET("/welcome", func(c *gin.Context) {
        firstname := c.DefaultQuery("firstname", "Guest")
        lastname := c.Query("lastname") // 是 c.Request.URL.Query().Get("lastname") 的簡寫

        c.String(http.StatusOK, "Hello %s %s", firstname, lastname)
    })    router.Run(":8080")}


image.png

7.獲取post參數;

func main()  {
   router := gin.Default()
   router.POST("/form_post", func(c *gin.Context) {
      message := c.PostForm("message")
      nick := c.DefaultPostForm("breaklinux", "hello gin") // 此方法能夠設置默認值
      c.JSON(200, gin.H{
         "status":  "posted",
         "message": message,
         "nick":    nick,
      })
   })
   router.Run()
}

image.png


9.路由分組

func main() {
    router := gin.Default()    // Simple group: v1
    v1 := router.Group("/v1")
    {
        v1.POST("/login", loginEndpoint)
        v1.POST("/submit", submitEndpoint)
        v1.POST("/read", readEndpoint)
    }    // Simple group: v2
    v2 := router.Group("/v2")
    {
        v2.POST("/login", loginEndpoint)
        v2.POST("/submit", submitEndpoint)
        v2.POST("/read", readEndpoint)
    }

    router.Run()
}
相關文章
相關標籤/搜索