3

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

LiberHome
409 声望1.1k 粉丝

有问题 欢迎发邮件 📩 liberhome@163.com