原文地址:http://www.niu12.com/article/40
package main
import (
"fmt"
"github.com/gin-gonic/gin"
"net/http"
)
func getRouteParams(c *gin.Context) {
// 獲取路由參數為name的值
// http://127.0.0.1:8888/route/card 輸出 card
name := c.Param("name")
c.String(http.StatusOK, name)
}
func getRoutePregParams(c *gin.Context) {
// 獲取路由參數為name的值 和job的值 job為無限長,忽略/,並且包含前一個/
// http://127.0.0.1:8888/route/card/
// 輸出 card /
// http://127.0.0.1:8888/route/card/name
// 輸出 card /name
// http://127.0.0.1:8888/route/card/name/hello
// 輸出 card /name/hello
name := c.Param("name")
job := c.Param("job")
c.String(http.StatusOK, name + " " + job)
}
/**
獲取路由參數
*/
func getParams(c *gin.Context) {
// http://127.0.0.1:8888/?name=card
// 輸出 card card 程序員
// http://127.0.0.1:8888/?name=card&job=coder
// 輸出 card card coder
// 當有多個參數相同時,取第一個value
// http://127.0.0.1:8888/?name=card&job=coder&name=周起
// 輸出 card card coder
// http://127.0.0.1:8888/?name=周起&job=coder&name=card
// 輸出 周起 周起 coder
// c.Query() 等同於 c.Request.URL.Query().Get()
name := c.Query("name")
name2 := c.Request.URL.Query().Get("name")
// 設置默認參數,如果job參數不存在,默認為程序員
name3 := c.DefaultQuery("job", "程序員")
c.String(http.StatusOK, name + " " + name2 + " " + name3)
}
func getRepeatParams(c *gin.Context) {
name := c.QueryArray("name")
// http://127.0.0.1:8888/repeat?name=周起&name=card
// 輸出 name:[周起 card], type:[]string
fmt.Printf("name:%v, type:%T", name, name)
// http://127.0.0.1:8888/repeat?job[a]=周起&job[b]=card
// 輸出 job:map[a:周起 b:card], type:map[string]string
job := c.QueryMap("job")
fmt.Printf("job:%v, type:%T", job, job)
}
func main() {
router := gin.Default()
// 獲取路由參數
router.GET("/route/:name", getRouteParams)
// 獲取正則路由參數
router.GET("/route/:name/*job", getRoutePregParams)
// 獲取queryString
router.GET("/", getParams)
// 獲取同名參數
router.GET("/repeat", getRepeatParams)
router.Run(":8888")
}