参考:

看云 Gin中文文档
Gin官网
Gin Github
B站:Gin教程_Golang框架Gin入门实战教程-更新中
李文周-Gin框架介绍及使用
李文周-validator库参数校验若干实用技巧

介绍:

一、介绍

Gin是一个Go编写的轻量级的http web框架,运行速度非常快。Gin最擅长的就是Api接口的高并发,如果的项目不大,业务相对简单,这个时候我们也推荐使用Gin。当接口的性能遭到较大挑战的时候,可以考虑使用Gin重写接口。

二、开发准备
1、创建项目
go mod init 项目名称

#整理mod中的模块(没有的话添加,没用到的mod删除):go mod tidy
2、下载并安装Gin
go get -u github.com/gin-gonic/gin
3、程序热加载

Gin官方没有提供热加载工具,只能借助第三方的工具来实现

go get github.com/pilu/fresh
4、代码分层划分
│
routers                        路由
│
controller	                   控制器
│
logic                         (或service 业务逻辑层)
│
models                         模型层(模型、模型相关的增、删、改、查操作)
|
static 	                       静态文件
│
templates                      模板文件
│
dao(database access object)  数据库交互层
│
go.mode  	                   项目依赖信息
│
main.go                        入口文件
三、框架语法
1、第一个Gin示例
package main

import (
	"github.com/gin-gonic/gin"
)

func main() {
	// 创建一个默认的路由引擎
	r := gin.Default()
	// GET:请求方式;/hello:请求的路径
	// 当客户端以GET方法请求/hello路径时,会执行后面的匿名函数
	r.GET("/hello", func(c *gin.Context) {
		// c.JSON:返回JSON格式的数据
		c.JSON(200, gin.H{
			"message": "Hello world!",
		})
	})
	// 启动HTTP服务,默认在0.0.0.0:8080启动服务
	r.Run() // r.Run(":8080")
}
2、获取请求参数

Get请求参数获取:

Post请求参数获取:

获取URL中的参数:

ShouldBind 参数绑定:

3、上传文件

参考:https://www.liwenzhou.com/posts/Go/Gin_framework/#autoid-0-3-0

4、重定向
5、路由


6、中间件



7、GORM
四、
1、GIN文件上传与返回
(1)下载文件
func main() {
	r := gin.Default() //启动gin路由,携带基础中间件启动 logger and recovery (crash-free) 中间件
	r.POST("testUpload", func(c *gin.Context) {
		file, _ := c.FormFile("file")
		in, _ := file.Open()
		defer in.Close()
		out, _ := os.Create("./"+file.Filename)
		defer out.Close()
		io.Copy(out, in)
		c.Writer.Header().Add("Content-Disposition", fmt.Sprintf("attachment; filename=%s", file.Filename))
		c.File("./"+file.Filename)
	})
	r.Run(":1010") // listen and serve on 0.0.0.0:8080
}