Gin框架基础

文章目录

      • 参考:
      • 介绍:
        • 一、介绍
        • 二、开发准备
          • 1、创建项目
          • 2、下载并安装Gin
          • 3、程序热加载
          • 4、代码分层划分
        • 三、框架语法
          • 1、第一个Gin示例
          • 2、获取请求参数
          • 3、上传文件
          • 4、重定向
          • 5、路由
          • 6、中间件
          • 7、GORM
        • 四、
          • 1、GIN文件上传与返回
          • (1)下载文件

参考:

看云 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

Gin框架基础_第1张图片

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请求参数获取:
Gin框架基础_第2张图片
Post请求参数获取:
Gin框架基础_第3张图片
获取URL中的参数:
Gin框架基础_第4张图片
ShouldBind 参数绑定:
Gin框架基础_第5张图片

3、上传文件

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

4、重定向

Gin框架基础_第6张图片

5、路由

Gin框架基础_第7张图片
Gin框架基础_第8张图片

6、中间件

Gin框架基础_第9张图片
Gin框架基础_第10张图片
Gin框架基础_第11张图片

7、GORM

参考:gorm 小记

四、

1、GIN文件上传与返回

参考: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
}

你可能感兴趣的:(Go,golang,开发语言,后端,gin)