乐趣区

关于gin:基于Gin框架的web后端开发三-获取queryString参数

tips:

  • 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

退出移动版