go --- go-bin获取请求参数

1、获取url参数

  URL参数可以通过DefaultQuery()Query()方法获取
DefaultQuery()若参数不存在,返回默认值,Query()若参数不存在,返回空串

user_id := ctx.Query("user_id")
page := ctx.DefaultQuery("page", "1")

// user?name=1,2,3,4,5
// [1,2,3,4,5]
names := contxt.QueryArray(“name”) 

// user?name[1]=hallen1&name[2]=hallen2
// map[1:hallen1 2:hallen2]
name_map := contxt.QueryMap(“name”)

//通过bind绑定结构体
type queryUri struct {
    
    
	Id   int    `uri:"id"`
	Name string `uri:"name"`
}
var q queryUri
err := ctx.ShouldBindUri(&q)

2、获取header参数

token,session Id,cookie id等常存放在header中,可以从header中直接读取

key := ctx.Request.Header.Get(key)

//通过bind绑定结构体
type queryHeader struct {
    
    
	MyHeader string `header:"my_header"`
	MyDemo   string `header:"my_demo"`
}
var q queryHeader
err := context.ShouldBindHeader(&q)

3、获取query参数

//通过bind绑定结构体
type queryParameter struct {
    
    
	Year  int `form:"year"`
	Month int `form:"month"`
}
var q queryParameter
err := context.ShouldBindQuery(&q)

4、获取form参数

表单传输为post请求,http常见的传输格式为四种:

application/json
application/x-www-form-urlencoded
application/xml
multipart/form-data

  表单参数可以通过PostForm()方法获取,该方法默认解析的是x-www-form-urlencodedfrom-data格式的参数

rows := ctx.Request.PostFormValue("rows")

5、获取body参数

//通过bind绑定结构体
type queryBody struct {
    
    
	Name string `json:"name"`
	Age  int    `json:"age"`
	Sex  int    `json:"sex"`
}
var q queryBody
	err := context.ShouldBindJSON(&q)

6、获取文件

f, err := ctx.FormFile("file")

 
如果获取参数的结构体可复用,建议用bind进行多个标签绑定

7、bind和shouldbind

Binding是一个接口,在源码中,有10个实现了Binding的结构体,以及3个接口

  • Must bind
    Methods: - Bind, BindJSON, BindXML, BindQuery, BindYAML
    Behavior - 这些方法底层使用 MustBindWith,如果存在绑定错误,请求将被以下指令中止c.AbortWithError(400, err).SetType(ErrorTypeBind),响应状态代码会被设置为400,请求头Content-Type被设置为text/plain; charset=utf-8。注意,如果你试图在此之后设置响应代码,将会发出一个警告 [GIN-debug] [WARNING] Headers were already written. Wanted to override status code 400 with 422
  • Should bind
    Methods: - ShouldBind, ShouldBindJSON, ShouldBindXML, ShouldBindQuery, ShouldBindYAML
    Behavior - 这些方法底层使用 ShouldBindWith,如果存在绑定错误,则返回错误,开发人员可以正确处理请求和错误。

 
参考链接:
https://blog.csdn.net/weixin_45604257/article/details/105145679
https://blog.csdn.net/kilmerfun/article/details/123929945
http://www.zzvips.com/article/221978.html
 
 
如有不对,烦请指出,感谢~

猜你喜欢

转载自blog.csdn.net/my_miuye/article/details/125288345
go
今日推荐