本文最后更新于 154 天前,其中的信息可能已经有所发展或是发生改变。如有疑问或错误请反馈至邮箱super.lucky.qu@gmail.com
前言
Gin框架个人总结由本人跟学教材时的个人理解与做题总结而来,难免具有很多错误,如发现请指正,谢谢!
电脑端可以于左栏“文章目录”来索引到指定小节,手机端可以通过左上角按钮唤出菜单索引到指定小节
正文
HTTP方法
GET
一般从Query取参数
根据HTTP/1.1协议的定义,GET请求的语义是用于获取资源信息,而不是修改服务器上的数据。因此,GET请求一般只通过URL的查询字符串来传递参数。
POST
一般从Form中取参数
HTTP协议规定,POST请求的数据必须放在消息主体中,但并没有规定具体的数据编码方式。开发者可以根据需要选择合适的编码方式,并通过请求头中的Content-Type
字段告知服务端数据的格式
DELETE
一般通过URI取参数
PUT
- 主要数据:通过请求体传递。
- 资源标识符:通常放在URL路径中。
- 附加信息:偶尔可以通过查询字符串传递,但不是主要方式
一般从Form中取参数
补充知识:URI相关
在地址栏中定义一个占位符“:”用来从URI获取数据,如:
r.DELETE("/test/:id", func(c *gin.Context) {
id := c.Param("id")
c.JSON(200, gin.H{
"id": id,
"Reply": "DELETE测试成功!",
})
})
Bind
只进行绑定
在Gin框架中,可以将接收的数据绑定到结构体中从而便于处理,通过使用ShouldBindJSON方法(具体哪个方法取决具体情况)可以将一个实例化的结构体绑定,从而将输入的数据处理,
对数据检查
对一个绑定后的结构体内数据进行检查,可以使用函数来进行检查,首先要在要进行检查的结构体字段后用标签`binding:””`来进行说明,如要使用Check函数来进行检查,可以在冒号后写required,Check,表示对这个字段要使用名为Check的函数进行检查
首先检查的函数接收一个validator.FieldLevel类型返回一个bool类型
使用validator.FieldLevel类型中的Field().Interface()方法进行断言应该获得的数据类型来获取数据并进行检查返回true或者false
如(fl为在函数中声明的validater.FieldLevel类型)
age ,ok := fl.Field().Interface().(int)
回到调用处,需要在使用前对gin注册函数,如:
if v, ok := binding.Validator.Engine().(*validator.Validate); ok {
err = v.RegisterValidation("AgeCheck", AgeCheck)
if err != nil {
panic(err)
}
}