Gin 框架笔记 | 青训营

159 阅读2分钟

Gin 框架笔记 | 青训营

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

restful api

简单来说,REST的含义就是客户端与Web服务器之间进行交互的时候,使用HTTP协议中的4个请求方法代表不同的动作

GET用来获取资源
POST用来新建资源
PUT用来更新资源
DELETE用来删除资源

gin html渲染

首先创建一个html文件在template下面,然后通过{{.key}}的方式获取到后端传过来的json数据,并且在后端中使用LoadHTMLGlog()来渲染html模板

获取参数

Query参数

当​/name=admin&pwd=123456,gin中name := c.Query("name"),pwd := c.Query("pwd")

form参数

username := c.PostForm("username") //对应h5表单中的name字段

Path参数

当请求/user/admin,url这样写
/user/:username,获取方式:/user/admin

路由

形如:r.GET("/get",func(c *gin.Context) {}),
匹配所有请求方法的Any方法,r.Any("/test",func(c *gin.Context) {})

为没有配置处理函数的路由添加处理程序,默认情况下它返回404代码,以下为没有匹配到路由的请求返回的是​templates/404.html​页面
r.NoRoute(func(c *gin.Context) {
c.HTML(http.StatusNotFound,"templates/404.html",nil)
})

路由组

可以将拥有共同前缀URL的路由划分为一个路由组

    user := r.Group("/user")  
    user.GET("/index", func(c *gin.Context) {})  
    user.POST("/login", func(c *gin.Context) {})  

等同/user/index,/user/login

中间件

处理请求过程中加入钩子函数,说白了,就是将r.get里面的匿名函数写main外面,做一个封装,这样代码更简洁,可读性更高

间件中使用Goroutine

当在中间件或 handler 中启动新的 Goroutine 时,不能使用原始的上下文,必须使用只读副本

    
// 创建在 goroutine 中使用的副本
tmp := c.Copy()
go func() {
// 用 time.Sleep() 模拟一个长任务。
time.Sleep(5 * time.Second)

            // 请注意您使用的是复制的上下文 "tmp",这一点很重要
log.Println("Done! in path " + tmp.Request.URL.Path)
}()
})

参数绑定

可以使用ShouldBind,它能够基于请求自动提取JSON,Form表单,Query等类型的值,并把值绑定到指定的结构体对象

文件上传

单个

获取:file, err := c.FormFile("f1")

上传:
log.Println(file.Filename)
dst := fmt.Sprintf("C:/tmp/%s", file.Filename)
// 上传文件到指定的目录
c.SaveUploadedFile(file, dst)

多个

获取:

    form, _ := c.MultipartForm()  
        files := form.File["file"]  
<br>上传  
    for index, file := range files {  
            log.Println(file.Filename)  
            dst := fmt.Sprintf("C:/tmp/%s_%d", file.Filename, index)  
            // 上传文件到指定的目录  
            c.SaveUploadedFile(file, dst)  
        }  

重定向

    // 指定重定向的URL
c.Request.URL.Path = "/test2"
r.HandleContext(c)

设置和获取Cookie

获取:c.Cookie("gin_cookie")

设置:
cookie = "NotSet"
c.SetCookie("gin_cookie", "test", 3600, "/", "localhost", false, true)

学习建议

关于这个gin的基本使用,同学们除了看视频之外还可以通过看菜鸟教程和b站去学习,菜鸟比较基础,可以在看完菜鸟教程之后去看b站,b站里面看一些实战项目,这样就可熟练起来