
什么是Gin?
Gin是一个用Golang编写的web微框架。
1. 小巧友好: Gin的依赖比Python, Java 之类的对环境的要求更少。
2. 速度更快。 如果你需要性能和良好的生产力,你会喜欢Gin。
支持中间件。传入的HTTP请求可以由一系列中间件和最终动作来处理,可以捕获HTTP请求发生的恐慌,并将其恢复。
3. JSON 验证。 可以解析和验证请求的JSON。
路由分组。更好地规划路由信息。路由组可以无限嵌套,而不会降低性能。
4. 错误管理。 Gin提供了收集HTTP请求期间发生的所有错误的方法。中间件可以将它们写入日志文件、数据库并通过网络发送。
5. 内置模板。 使用JSON、XML和 HTML 更加方便。
6. 高扩展。 创建一个新的中间件,实现 中间件 的功能,并可以实现多个中间件串联。
1、安装Gin

安装Gin
Administrator@PC202110152301 MINGW64 /e/go/src/gin1
$ go get -u github.com/gin-gonic/gin
go get: upgraded github.com/ go -playground/locales v0.13.0 => v0.14.0
go get: upgraded github.com/go-playground/universal-translator v0.17.0 => v0.18.0
go get: upgraded github.com/go-playground/validator/v10 v10.4.1 => v10.10.0
go get: upgraded github.com/golang/protobuf v1.3.3 => v1.5.2
go get: upgraded github.com/json- iterator /go v1.1.9 => v1.1.12
go get: upgraded github.com/leodido/go-urn v1.2.0 => v1.2.1
go get: upgraded github.com/mattn/go-isatty v0.0.12 => v0.0.14
go get: upgraded github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 => v0.0.0-20180306012644-bacd9c7ef1dd
go get: upgraded github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 => v1.0.2
go get: upgraded github.com/ugorji/go/codec v1.1.7 => v1.2.6
go get: upgraded golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 => v0.0.0-20211215153901-e495a2d5b3d3
go get: upgraded golang.org/x/sys v0.0.0-20200116001909-b77594299b42 => v0.0.0-20211216021012-1d35b9e2eb4e
go get: upgraded golang.org/x/text v0.3.2 => v0.3.7
go get: added google.golang.org/ protobuf v1.27.1
go get: upgraded gopkg.in/yaml.v2 v2.2.8 => v2.4.0
Administrator@PC202110152301 MINGW64 /e/go/src/gin1
$
2、生成第一个Gin Web

第一个Gin Web
package main
import (
//将 gin 引入到代码中
"github.com/gin-gonic/gin"
"log"
//需要使用http.StatusOK之类的常量,引入 net/http 包
"net/http"
)
func Index(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"status": 200,
})
}
func main() {
log.Set Flags (log.LstdFlags | log.Llongfile)
var app = gin.Default()
app.GET("/", Index )
// 监听并在 0.0.0.0:80 上启动服务
err := app.Run(":80")
if err != nil {
log.Panicln(err.Error())
}
}
3、Gin Web单元测试

Gin Web单元测试
package main
import (
"github.com/gin-gonic/gin"
"io/ioutil"
"log"
"net/http/httptest"
"testing"
)
func TestIndex(t *testing.T) {
log.SetFlags(log.LstdFlags | log.Llongfile)
app := gin.Default()
app.GET("/", Index)
r := httptest.New Request ("GET", "/", nil )
w := httptest.NewRecorder()
app.ServeHTTP(w, r)
result := w.Result()
body := result.Body
bytes, err := ioutil.ReadAll(body)
if err != nil {
log.Panicln(err.Error())
}
t.Log(string(bytes))
}
4、执行效果

启动服务器

浏览器执行