自动绑定表单数据
使用 ShouldBindQuery
或者 ShouldBind
需要注意结构体的格式
例如一个查询分页的参数获取
type Queries struct {
Page uint `form:"page" json:"page"`
PerPage uint `form:"per_page" json:"per_page"`
Keywords string `form:"keywords" json:"keywords"`
}
func GetList(c *gin.Context) {
var query Queries
if err := c.ShouldBindQuery(&query); err != nil {
// error
}
}
form:"page" json:"page"
这个就是结构体的解析说明又名struct tag
这里的 form
指查询参数或表单提交的参数,如果是 GET
或 表单POST
的数据必须有这个标记,不然会绑定失败
如果是 POST
的 json
则用 json:"page"
如果是 POST
的 xml
则用 xml:"page"
ShouldBind
是会自动判断内容的格式,是GET
会匹配网址上的参数,其他则根据 请求头 Content-Type
自动判断
reflect: reflect.Value.SetUint using unaddressable value
只要出现 using unaddressable value
就表明代码中该传引用的地方传了值
CORS 的使用
对与跨域的处理中间件必须放在全局即 *gin.Engine
上面,不能放在某一个路由组上
原因是跨域请求会产生一个前置 OPTIONS
请求,而这个请求实际是不需要响应内容的,如果没有匹配的路由就会响应404
影响下一步浏览器发出真正的请求
websocket
不能添加请求头
所有登录信息没法通过请求头传递,而网址传递并不安全,所以只能先建立连接,然后通过发送消息传递
转载请保留原文链接: https://zodream.cn/blog/id/204.html