gin学习笔记| 青训营笔记

144 阅读1分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第1篇笔记

本文章只作为初学者学习gin的记录,笔记记录的是探索的过程,若有错误,还请见谅。

第一段代码:

image.png

不熟悉的结构很多,gin.Default(),gin.Context,gin.H以及括号缭乱的结构

1. gin.H 其实就是map[string]interface{},代表了键类型为string,值类型随意的数据结构,在数据绑定的过程中会经常用到.

2. Context和Engine是gin的结构体,内部实现了很多方法,先稍稍了解下gin.Default image.png 此函数创建了一个默认的Engine类引擎

3. Get和Post函数参数包含一个相对路径和匿名函数,匿名函数用来实现需要的功能,具体要看应用的场景

4. 试着写写看:

package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
type Test struct {
Txt1 string form:"txt1" json:"txt1" binding:"required"
Txt2 string form:"txt2" json:"txt2" binding:"required"
}
func main() {
r := gin.Default()
r.GET("/test", func(c *gin.Context) {
ts := &Test{"test", "test again"}
if err := c.ShouldBind(ts); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"ERROR": err.Error()})
} else {
c.JSON(http.StatusOK, gin.H{"message": "Good!"})
}
})
r.Run()
}

验证结果:

image.png

 

运行结果:

5. 数据解析和绑定:

Bind类型:

required:必填内容

Omitempty:选填,如果内容是零值就跳过

unique:确保内容唯一性,对不同类型处理方式不同

min,max:对数字类型代表最小最大值,对字段限制字段长度

email:必须是邮件格式

Oneof:在指定值中选取

  数据捆绑的模式有两类:

1.Mustbind image.png 2.Shouldbind image.png   可以看出二者底层使用的方法不同,

image.png

image.png 后者绑定失败,会返回错误,让开发人员检测到,而前者会将http响应状态设置为400(http.StatusBadRequest),如果不熟悉详细情况但是想要更好的控制程序,使用Shouldbind较好。