gin框架介绍
gin是用go语言开发的一个web框架,简单易用,是一个轻量级框架。
为什么选择Gin
- 1.运行响应非常快
- 2.快速开发
- 3.文档齐全
- 4.社区活跃
特性
- 1.快速:基于 Radix 树的路由,小内存占用。没有反射。可预测的 API 性能。
- 2.支持中间件:传入的 HTTP 请求可以由一系列中间件和最终操作来处理。 例如:Logger,Authorization,GZIP,最终操作 DB。
- 3.Crash 处理:Gin 可以 catch 一个发生在 HTTP 请求中的 panic 并 recover 它。这样,你的服务器将始终可用。例如,你可以向 Sentry 报告这个 panic!
- 4.JSON 验证:Gin 可以解析并验证请求的 JSON,例如检查所需值的存在。
- 5.路由组:更好地组织路由。是否需要授权,不同的 API 版本…… 此外,这些组可以无限制地嵌套而不会降低性能。
- 6.错误管理:Gin 提供了一种方便的方法来收集 HTTP 请求期间发生的所有错误。最终,中间件可以将它们写入日志文件,数据库并通过网络发送。
- 7.内置渲染:Gin 为 JSON,XML 和 HTML 渲染提供了易于使用的 API。
- 8.可扩展性:新建一个中间件非常简单。
Gin环境搭建
注意:go1.9版本以上,很快将不再支持go1.7或go1.8。
先安装Go环境,然后直接运行以下命令即可:
1 | go get -u github.com/gin-gonic/gin |
我的第一个Gin项目
1 | package main |
运行原理
router := gin.Default()
初始化一个引擎,是gin.New()的升级。
router.GET
- 1.RESTFUL风格的请求方法(method)
- 2.有两个参数:
relativePath:路由,string类型
HandlerFunc:执行的函数 - 3.可以使用router.Handle代替,多了个的method参数(字符串),method参数必须是大写的,如:GET
执行的函数
- 1.必须有个参数是gin.Context指针类型的
注意:context是gin的一个重要组成部分。用来在中间层传递数据流。 - 2.函数是个参数,不能调用
router.Run
启动http监听,有个address参数,字符串类型的,可以指定host和port
注意:
- addr的host和port是用冒号分隔的
- 只指定port,port前面必须要有冒号
- 指定了host和port,host和port中间有冒号
- 不能只指定host
go mod包管理
前提是Go版本>=1.11
什么是module?
go中包管理工具
使用module和不使用的区别
使用环境变量中的GO111MODULE控制是否使用mod
- 1.开启mod:
go env -w GO111MODULE=on
,会将包下载到gopath下的pkg下的mod文件夹中 - 2.关闭mod:
go env -w GO111MODULE=off
,会将包下载到gopath下的src下 - 3.
go env GO111MODULE=auto
,只有当前目录在GOPATH/src目录之外而且当前目录包含go.mod文件或者其子目录包含go.mod文件才会启用。
go mod文件的语法介绍
示例:
1 | module my/thing |
- 1.module:指明根目录
- 2.go 后面跟版本号是指定go的版本
- 3.require是个动作指令,对依赖包起作用,比如require(依赖),还有exclude(排除),replace(替代),相同动作的可以放在一个动词+括号组成的结构中,如下:
1 | require ( |
注意:
- exclude和replace仅适用于主的go.mod文件中,其他的依赖中会被忽略、
- 可以使用replace替换无法获取的库,比如
golang.org/x/crypto replace为github.com.com/golang/crypto
- 注释:使用//,没有/* xxx */这种块注释
go mod 命令
go mod help 查看帮助
1 | download 下载模块到本地缓存,go env中的GOCACHE路径,可以通过go clean -cache清空缓存多个项目可以共享缓存的包 |
已经完成的项目可以这样操作来使用mod
- 项目路径下执行go mod init
- 然后再执行go mod vendor(或者直接运行项目)
项目中可以是这样的执行顺序:
- init初始化 –> tidy 增删模块–> verify 校验模块–>vendor
注意:项目中引入该项目下的任何路径都要是绝对路径,也就是以改项目名开头的路径
使用mod的步骤:
- 1.开启mod:go111module=on
- 2.进入项目,执行go mod init (在项目根目录生成go.mod文件)
- 3.启动项目(go.mod添加依赖的包)