獲取querystring參數
querystring指的是URL中?后面攜帶的參數,例如:/user/search?username=小王子&address=沙河。 獲取請求的querystring參數的方法如下:
func main() { //Default返回一個默認的路由引擎 r := gin.Default() r.GET("/user/search", func(c *gin.Context) { username := c.DefaultQuery("username", "小王子") //username := c.Query("username") address := c.Query("address") //輸出json結果給調用方 c.JSON(http.StatusOK, gin.H{ "message": "ok", "username": username, "address": address, }) }) r.Run() }
獲取form參數
當前端請求的數據通過form表單提交時,例如向/user/search發送一個POST請求,獲取請求數據的方式如下:
func main() { //Default返回一個默認的路由引擎 r := gin.Default() r.POST("/user/search", func(c *gin.Context) { // DefaultPostForm取不到值時會返回指定的默認值 //username := c.DefaultPostForm("username", "小王子") username := c.PostForm("username") address := c.PostForm("address") //輸出json結果給調用方 c.JSON(http.StatusOK, gin.H{ "message": "ok", "username": username, "address": address, }) }) r.Run(":8080") }
獲取json參數
當前端請求的數據通過JSON提交時,例如向/json發送一個POST請求,則獲取請求參數的方式如下:
r.POST("/json", func(c *gin.Context) { // 注意:下面為了舉例子方便,暫時忽略了錯誤處理 b, _ := c.GetRawData() // 從c.Request.Body讀取請求數據 // 定義map或結構體 var m map[string]interface{} // 反序列化 _ = json.Unmarshal(b, &m) c.JSON(http.StatusOK, m) })
更便利的獲取請求參數的方式,參見下面的 參數綁定 小節。
獲取path參數
請求的參數通過URL路徑傳遞,例如:/user/search/小王子/沙河。 獲取請求URL路徑中的參數的方式如下。
func main() { //Default返回一個默認的路由引擎 r := gin.Default() r.GET("/user/search/:username/:address", func(c *gin.Context) { username := c.Param("username") address := c.Param("address") //輸出json結果給調用方 c.JSON(http.StatusOK, gin.H{ "message": "ok", "username": username, "address": address, }) }) r.Run(":8080") }
摘自 <https://www.liwenzhou.com/posts/Go/Gin_framework/>