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