第一章-gin框架前奏

第一节 gin框架介绍

一、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.可扩展性:新建一个中间件非常简单

第二节:环境搭建

注意:go1.9版本以上,很快将不再支持go1.7或go1.8。

一、go环境安装

1.go安装

2.环境配置:

  • 变量名:GOPATH  变量值:E:\go\workspace   你的工作路径
  • 变量名:GOROOT 变量值:E:\go\install           go的安装路径
  • 变量名:Path 增加值:%GOROOT%\bin;%GOPATH%\bin;

注意:删除自动添加的gopath和goroot

3.检查配置是否成功

  • go env 查看GOPATH和GOROOT是否正确

二、git安装:拉取代码

这里不再演示

三、工程管理:工作目录下新建三个文件夹

1.src:用于以代码包的形式组织并保存go源码文件,

2.pkg:用于存放经由go install命令构建的安装后的代码包,不需要手动创建

3.bin:与pkg目录类似,在通过go install命令完成安装后,保存由go命令源码间生成的可执行文件

四、安装gin

go get -u github.com/gin-gonic/gin

第三节 第一个gin项目

package main
import "github.com/gin-gonic/gin"
func main() {
    //engine := gin.New()
    router := gin.Default()
    engine.GET("/", func(ctx *gin.Context) {
        ctx.String(200,"hello gin")
    })
    router.Run(":9000")
}

第四节 运行原理

一、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

注意:

  1. addr的host和port是用冒号分隔的
  2. 只指定port,port前面必须要有冒号
  3. 指定了host和port,host和port中间有冒号
  4. 不能只指定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文件才会启用。

项目可以不用建在src下了,任何非中文路径下都可以,建议有个统一的代码路径

三、go.mod文件的语法介绍

go help go.mod 查看帮助

示例:

module my/thing
go 1.13.4
require (
        new/thing v2.3.4
        old/thing v1.2.3
)

1. module:指明根目录

2. go 后面跟版本号是指定go的版本

2. require是个动作指令,对依赖包起作用,比如require(依赖),还有exclude(排除),replace(替代),相同动作的可以放在一个动词+括号组成的结构中,如下:

require (
    new/thing v2.3.4
    old/thing v1.2.3
)
require new/thing v2.3.4
require old/thing v1.2.3
// 排除
exclude old/thing         v1.2.3
// 替换,使用箭头后的替换前面的
replace bad/thing         v1.4.5     => good/thing v1.4.5

注意:

  • exclude和replace仅适用于主的go.mod文件中,其他的依赖中会被忽略、
  • 可以使用replace替换无法获取的库,
    • 比如golang.org/x/crypto replace为github.com.com/golang/crypto

3.注释:使用//,没有/* xxx */这种块注释

四、go mod 命令

go mod help 查看帮助

download    下载模块到本地缓存,go env中的GOCACHE路径,可以通过go clean -cache清空缓存
            多个项目可以共享缓存的包
edit        在工具或脚本中编辑go.mod文件
graph       打印模块需求图
init        在当前目录下初始化新的模块
    go mod init 【项目名】    默认使用当前路径的项目名称
tidy        添加缺失的模块以及移除无用的模块,生成go.sum文件
vendor      会自动下载项目中依赖的包到项目根目录下的vendor文件夹下,并写入go.mod文件,同时生成
            modules.txt文件
            go mod vender -v     
verify      检查当前模块的依赖是否全部下载下来,是否下载下来被修改过
why         解释为什么需要包或模块
注意:-v参数可以查看执行的详细信息

 

已经完成的项目可以这样操作来使用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添加依赖的包)

 

posted @ 2022-12-21 18:27  羊脂玉净瓶  阅读(95)  评论(0)    收藏  举报