Skip to content

集成Gin 原创

在实际的项目中,并不像写 Hello World 那么简单,我们需要的大多是 Web服务,但是我们又不可能再去基于 net/http 从 0 搭建一套 Web 框架,这样重复造轮子的事情不仅浪费时间,还不一定能达到预定的效果。

目前 Go Web 主流的框架主要有:Gin、Echo 和 Beego。他们各有千秋,可以参考https://juejin.cn/post/7067347764899741709进行对比。

我这里采用 Gin 构建项目。

1、下载 gin

要使用 gin,首先是下载 gin 包,命令如下:

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

2、改造 main.go

下面我们修改main.go文件,让其变成一个web服务,内容如下:

go
package main

import (
    "net/http"

    "github.com/gin-gonic/gin"
)

func main() {
    // 初始化 Gin 实例
    r := gin.Default()

    // 注册一个路由
    r.GET("/", func(c *gin.Context) {

        // 以 JSON 格式响应
        c.JSON(http.StatusOK, gin.H{
            "Data": "Hello World!",
        })
    })

    // 运行服务
    r.Run()
}

然后使用 go run main.go 启动服务,可以看到输出如下:

d937220d2d8efae4ec15cd80178b5cc3 MD5

该服务默认会监听在8080端口,我们可以在浏览器上通过 http://127.0.0.1:8080/ 访问获取数据,如下:

e35ddbf98990a3f1143bc0f41729d501 MD5

3、注册中间件

在实际过程中,我们会开发很多中间件,比如处理日志的,处理请求的,处理跨域的等等,要使用这些中间件,就要用到 gin.Engine.Use() 方法,当我们使用 gin.Default() 的时候,默认就注册了两个中间件,源码如下:

go
// Default returns an Engine instance with the Logger and Recovery middleware already attached.
func Default() *Engine {
	debugPrintWARNINGDefault()
	engine := New()
	engine.Use(Logger(), Recovery())
	return engine
}

Logger()是日志中间件,Recovery()是捕获异常的中间件。

后续我们会自定义这两个中间件,为此,我们将main.go中的代码改造成如下:

go
package main

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

func main() {
	// 初始化 Gin 实例
	r := gin.New()

	// 注册中间件
	r.Use(gin.Logger(), gin.Recovery())

	// 注册一个路由
	r.GET("/", func(c *gin.Context) {

		// 以 JSON 格式响应
		c.JSON(http.StatusOK, gin.H{
			"Data": "Hello World!",
		})
	})

	// 运行服务
	r.Run()
}

如上,我们整个逻辑是清晰的:

192d10a4cb345ffa5689414d9fc2a3e2 MD5

4、使用 apifox 调试

进入 Kawkeye 项目,配置环境:

eeda69adf52e71f37b53cce40ad189a2 MD5

这里选择测试环境,修改 URL 地址,如下:

a39d66e6161067f24bd6ba23c7ebe18b MD5

保存退出,环境配置完成。

然后新建接口,如下:

5f7041b11c481484f52ea7455fba82dc MD5

然后按下图进行配置:

22d2c09cbe0e26fba53ae195514b8a90 MD5

配置完成后,保存退出。

选择环境,点击运行,如下:

b488911f8444160ab83698f0f28e9f32 MD5

发送请求,即可获取到想要的结果,如下:

556f049d4cfcf78b42049622270539a7 MD5

5、代码版本

本次开发完成后,记得标记代码,如下:

go
git add .
git commit -m "add gin"
最近更新