基於Gin框架的web後端開發(三): 獲取queryString引數

LiberHome發表於2022-06-12

tips:

  • 獲取queryString我們經常使用GET請求
  • go mod tidy 可以分析程式碼中依賴的第三方包,然後在go.mod中將這些以來記錄下來。

例如:想要獲取query欄位中的楊超越:
http://127.0.0.1:9090/web?query=楊超越

方式一:Query

package main

import (
    "github.com/gin-gonic/gin"
    "net/http"
)

func main() {
    r := gin.Default()
    r.GET("/web", func(c *gin.Context) {
        //這裡要獲取瀏覽器那邊發請求攜帶的query string引數
        name := c.Query("query")
        c.JSON(http.StatusOK, gin.H{
            "name": name,
        })
    })
    r.Run(":9090")
}

測試結果如下:

方式二:DefaultQuery

這其實和方式一相似,區別在於,如果沒有查詢到資料,可以用設定好的default資料:

package main

import (
    "github.com/gin-gonic/gin"
    "net/http"
)

func main() {
    r := gin.Default()
    r.GET("/web", func(c *gin.Context) {
        //這裡要獲取瀏覽器那邊發請求攜帶的query string引數
        //name := c.Query("query")
        name := c.DefaultQuery("query", "someone")
        c.JSON(http.StatusOK, gin.H{
            "name": name,
        })
    })

    r.Run(":9090")
}

測試結果如下:


方式三:GetQuery

這個函式有2個返回值,其實就是多了一個bool值,如果去不到引數,第二個返回的就是false:

package main

import (
    "github.com/gin-gonic/gin"
    "net/http"
)

func main() {
    r := gin.Default()
    r.GET("/web", func(c *gin.Context) {
        //這裡要獲取瀏覽器那邊發請求攜帶的query string引數
        //name := c.Query("query")
        //name := c.DefaultQuery("query", "someone")
        name, ok := c.GetQuery("query")
        if !ok {
            name = "someone"
        }
        c.JSON(http.StatusOK, gin.H{
            "name": name,
        })
    })

    r.Run(":9090")
}

我覺第三種方式,考慮的比較全面,我更喜歡使用,當然,另外兩種方式也可以在合適的場景使用。


參考:bilibili

相關文章