Gin 框架入门笔记
一、什么是 GinGin 是 Go 语言中最常用的 Web 框架之一。特点轻量性能高路由简单开发速度快很多 Go 后端项目都会使用 Gin。安装go get-ugithub.com/gin-gonic/gin二、第一个 Gin 程序创建main.gopackagemainimportgithub.com/gin-gonic/ginfuncmain(){r:gin.Default()r.GET(/,func(c*gin.Context){c.String(200,hello gin)})r.Run()}运行go run main.go浏览器访问http://localhost:8080三、Gin 核心对象1. gin.Default()r:gin.Default()作用创建一个默认路由引擎。里面默认带了日志中间件panic恢复中间件开发里基本都直接用它。2. 路由r.GET()r.POST()r.PUT()r.DELETE()分别对应方法作用GET查询POST新增PUT修改DELETE删除示例r.GET(/user,func(c*gin.Context){})r.POST(/user,func(c*gin.Context){})3. Run()r.Run()默认启动8080端口等价于r.Run(:8080)指定端口r.Run(:9090)四、返回数据1. 返回字符串r.GET(/,func(c*gin.Context){c.String(200,hello)})2. 返回 JSON重点开发里最常用。r.GET(/user,func(c*gin.Context){c.JSON(200,gin.H{name:张三,age:18,})})返回{name:张三,age:18}3. 返回 HTMLc.HTML()后面配合模板使用。五、获取请求参数1. 获取 Query 参数URL/user?id1namezhangsan代码r.GET(/user,func(c*gin.Context){id:c.Query(id)name:c.Query(name)c.JSON(200,gin.H{id:id,name:name,})})2. 获取路径参数路由r.GET(/user/:id,func(c*gin.Context){id:c.Param(id)c.String(200,id)})访问/user/100输出1003. 获取 POST 表单参数r.POST(/login,func(c*gin.Context){username:c.PostForm(username)password:c.PostForm(password)c.JSON(200,gin.H{username:username,password:password,})})六、接收 JSON 数据前端发送{name:张三,age:18}定义结构体typeUserstruct{Namestringjson:nameAgeintjson:age}接收r.POST(/user,func(c*gin.Context){varuser User c.BindJSON(user)c.JSON(200,user)})这个开发里特别常见。七、路由分组项目大了以后路由不能全写一起。Gin 支持分组。userGroup:r.Group(/user){userGroup.GET(/list,func(c*gin.Context){})userGroup.POST(/add,func(c*gin.Context){})}最终路由/user/list /user/add八、中间件重点中间件本质在请求前后执行一些公共逻辑。比如日志登录校验JWT鉴权权限验证1. 定义中间件funcMiddleware()gin.HandlerFunc{returnfunc(c*gin.Context){fmt.Println(请求前)c.Next()fmt.Println(请求后)}}2. 使用中间件全局使用r.Use(Middleware())3. 路由使用中间件r.GET(/user,Middleware(),func(c*gin.Context){})九、文件上传r.POST(/upload,func(c*gin.Context){file,_:c.FormFile(file)c.SaveUploadedFile(file,./file.Filename)c.String(200,上传成功)})十、重定向r.GET(/a,func(c*gin.Context){c.Redirect(302,/b)})十一、模板渲染加载模板r.LoadHTMLGlob(templates/*)返回页面r.GET(/,func(c*gin.Context){c.HTML(200,index.html,gin.H{title:首页,})})十二、Gin 项目结构小项目project │ ├── main.go真实项目一般project │ ├── controller ├── service ├── dao ├── model ├── router ├── middleware ├── config ├── main.go十三、Gin MySQLGo 里面一般会搭配GinGormMySQL形成完整后端。安装 Gormgo get gorm.io/gormMySQL 驱动go get gorm.io/driver/mysql十四、常见状态码状态码含义200成功404资源不存在500服务器错误401未登录403无权限十五、完整小案例packagemainimportgithub.com/gin-gonic/ginfuncmain(){r:gin.Default()r.GET(/hello,func(c*gin.Context){name:c.Query(name)c.JSON(200,gin.H{msg:hello name,})})r.Run(:8080)}访问http://localhost:8080/hello?namezjl返回{msg:hello zjl}十六、Gin 核心总结Gin 最核心的内容路由 参数获取 JSON返回 中间件 路由分组真正开发里最常写的其实就是r.GET()r.POST()c.JSON()c.Query()c.Param()c.BindJSON()把这些掌握以后基本已经能开始写 Go Web 项目了。