一、Gin介绍
1.1 什么是Gin?
Gin是一个使用Go语言开发的Web框架。
1.2 Gin有什么特点?
-
快速 基于Radix树的路由,小内存占用。没有反射。可预测的API性能。
-
支持中间件 传入的HTTP请求可以由一系列中间件和最终操作来处理。
-
Crash处理 Gin可以catch一个发生在HTTP请求中的panic并recover它。这样,你的服务器将始终可用。
-
JSON验证 Gin可以解析并验证请求的JSON。
-
路由组 Gin帮助您更好地组织您的路由。此外,路由分组可以无限嵌套而不降低性能。
-
错误管理 Gin提供了一种方便的方法来收集HTTP请求期间发生的所有错误。最终,中间件可以将它们写入日志文件,数据库并通过网络发送。
-
内置渲染 Gin为JSON,XML和HTML渲染提供了易于使用的API。
-
可扩展性 新建一个中间件非常简单。
1.3 Gin可以做什么?
- 开发API
- 直接在框架中
二、开发环境
| 序号 | 名称 | 内容 | 版本号 | 备注 |
|---|---|---|---|---|
| 1 | window | 系统 | V10 | |
| 2 | git | 代码管理工具 | V2.37.0 | |
| 3 | golang | 语言环境 | V1.16.3 | |
| 4 | gin | v1.9.0 |
三、开始项目
3.1 创建一个项目并初始化Git和Go Mod
# 初始化git仓库
git init
# 初始化go mod
go mod init
# 添加go的gin包
go get github.com/gin-gonic/gin
添加.gitignore文件
.idea
.env
vendor/
build/
runtime/
3.2 开始创建项目子文件夹
app 开发使用的文件夹,app下创建控制器文件夹(controllers)、模型文件夹(models)、帮助文件夹(helpers)、中间件文件夹(middlewares)、路由文件夹(routers)、脚本文件夹(script)
build 打包文件夹
cmd 命令行文件夹
config 配置文件存储
public 公共资源存储,一般是存放图片、csv、Excel等文件
runtime 运行文件夹,存储一些log等
vendor 存储引入的包
3.3 添加第一个Golang主文件
main.go
package main
import (
"github.com/gin-gonic/gin"
)
func setupRouter() *gin.Engine {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.String(200, "pong")
})
return r
}
func main() {
r := setupRouter()
r.Run(":8080")
}
3.4 运行程序
go run main.go
3.5 测试
创建测试用例
package main
import (
"net/http"
"net/http/httptest"
"testing"
"github.com/stretchr/testify/assert"
)
func TestPingRoute(t *testing.T) {
router := setupRouter()
w := httptest.NewRecorder()
req, _ := http.NewRequest("GET", "/ping", nil)
router.ServeHTTP(w, req)
assert.Equal(t, 200, w.Code)
assert.Equal(t, "pong", w.Body.String())
}
3.6 项目打包
# Windows
go build -o build/ZhaoGodService.exe main.go
# Linux
go env -w CGO_ENABLED=0 GOOS=linux GOARCH=amd64
go build -o build/ZhaoGodService main.go
Gin导航目录:
Gin教程--Gin融合Cobra实现命令行(二)
更多内容请去公众号【老罗分享】获取