跳到內容

Map 作為查詢字串或 POST 表單參數

有時你需要接收一組鍵值對,其中的鍵事先未知——例如動態篩選器或使用者自訂的中繼資料。Gin 提供 c.QueryMapc.PostFormMap 來將方括號表示法的參數(如 ids[a]=1234)解析為 map[string]string

  • c.QueryMap("key") —— 從 URL 查詢字串中解析 key[subkey]=value 對。
  • c.PostFormMap("key") —— 從請求主體中解析 key[subkey]=value 對。
package main
import (
"fmt"
"net/http"
"github.com/gin-gonic/gin"
)
func main() {
router := gin.Default()
router.POST("/post", func(c *gin.Context) {
ids := c.QueryMap("ids")
names := c.PostFormMap("names")
fmt.Printf("ids: %v; names: %v\n", ids, names)
c.JSON(http.StatusOK, gin.H{
"ids": ids,
"names": names,
})
})
router.Run(":8080")
}

測試

Terminal window
curl -X POST "http://localhost:8080/post?ids[a]=1234&ids[b]=hello" \
-d "names[first]=thinkerou&names[second]=tianou"
# Output: {"ids":{"a":"1234","b":"hello"},"names":{"first":"thinkerou","second":"tianou"}}

另請參閱