数据绑定–Should bind
一、ShouldBind
可以绑定Form、QueryString、Json,uri
form标签:Form、QueryString
json标签:Json
uri标签:uri
form的绑定示例代码:
// 结构体
type User struct {
Id int form:"id" json:"id"
Name string form:"name" json:"name"
}
// 注意:structTag:指定字段名称,不用使用首字母大写的
// 绑定
var user User
context.ShouldBind(&user)
fmt.Println(user)
// 前端
QueryString的绑定示例代码:
// 结构体中structTag的form起作用
var user User
context.ShouldBind(&user)
fmt.Println(user)
访问:http://127.0.0.1:8080/tobind?name=zhiliao&age=110
json的绑定示例代码
// 结构体中structTag的json起作用
func DoBind(context *gin.Context) {
var user User
context.ShouldBind(&user)
fmt.Println(user)
context.JSON(200,gin.H{
"msg":"success",
"code":200,
})
}
前端:ajax
<form>
<input type="text" name="name" id="name"><br>
<input type="text" name="age" id="age"><br>
<input type="button" value="提交" id="btn_add">
</form>
<script>
var btn_add = document.getElementById("btn_add");
btn_add.onclick = function (ev) {
var name = document.getElementById("name").value;
var age = document.getElementById("age").value;
$.ajax({
url:"/dobind",
type:"POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
data:JSON.stringify({
"name":name,
"age":Number(age)
}),
success:function (data) {
console.log(data);
},
fail:function (data) {
console.log(data);
}
})
}
</script>
注意:
contentType: "application/json; charset=utf-8",
dataType: "json",
"age":Number(age) age是个int类型,必须得转成int类型才可以直接绑定
二、ShouldBindWith
可以使用显式绑定声明绑定 multipart form:
c.ShouldBindWith(&form, binding.Form)
或者简单地使用 ShouldBind 方法自动绑定
三、ShouldBindQuery等
ShouldBindJSON,ShouldBindXML,ShouldBindQuery,ShouldBindYAML等函数只绑定对应格式的参数
四、ShouldBindUri:绑定 Uri
使用structTag:uri
// 结构体中structTag的uri起作用
结构体:
type User struct {
Id int uri:"id"
Name string uri:"name"
Age int uri:"age"
}
路由:engine.GET("/tobind2/:name/:age",ToBind)
func ToBind(context *gin.Context) {
var user User
context.ShouldBindUri(&user)
fmt.Println(user)
context.String(200,“success”)
}
访问:http://127.0.0.1:8080/tobind2/zhiliao/110