编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

golang从入门到精通,Gin Web开发,介绍、安装与单元测试

wxchong 2024-07-25 13:31:43 开源技术 12 ℃ 0 评论

什么是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


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

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.SetFlags(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单元测试

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.NewRequest("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、执行效果

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表