参考文献

步骤说明

路径参数

请求地址:{{url}}/v1/member/info/:code

code := c.Param("code")

Get参数

请求地址:{{url}}/v1/member/info?code="嘿嘿嘿"

code := c.Query("code")
code := ctx.DefaultQuery("code", "axinblog")

Post参数

  • json 中获取
type Params struct {
    MemberId int64  `json:"member_id"`
    Issue    string `json:"issue"`
}

var params Params
_ = ctx.BindJSON(&params)
  • 表单中获取
// 表单取值
code := ctx.PostForm("code")

// 无值取默认
code := ctx.DefaultPostForm("code", "axinblog")

Json参数

  • 方式一:通过map
params := make(map[string]interface{})
_ = ctx.BindJSON(&params)

code := params["code"].(string)
  • 方式二:通过struct
type Params struct {
	Code string `json:"code"`
}
func Test(ctx *gin.Context) {
	params := Params{}

	_ = ctx.BindJSON(&params)

	ctx.JSON(http.StatusOK, gin.H{
		"code": params.Code,
	})
}

获取所有参数

form方式的请求:

ctx.Request.ParseForm()
for k, v := range ctx.Request.PostForm {
    fmt.Printf("k:%v\n", k)
    fmt.Printf("v:%v\n", v)
}

application/json

data, _ := ioutil.ReadAll(ctx.Request.Body)
fmt.Printf("ctx.Request.body: %v", string(data))

buf := make([]byte, 1024)
num, _ := ctx.Request.Body.Read(buf)
reqBody := string(buf[0:num])
fmt.Printf("ctx.Request.body: %v", reqBody)