集成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
启动服务,可以看到输出如下:
该服务默认会监听在8080
端口,我们可以在浏览器上通过 http://127.0.0.1:8080/
访问获取数据,如下:
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()
}
如上,我们整个逻辑是清晰的:
4、使用 apifox 调试
进入 Kawkeye
项目,配置环境:
这里选择测试环境
,修改 URL 地址,如下:
保存退出,环境配置完成。
然后新建接口,如下:
然后按下图进行配置:
配置完成后,保存退出。
选择环境,点击运行,如下:
发送请求,即可获取到想要的结果,如下:
5、代码版本
本次开发完成后,记得标记代码,如下:
go
git add .
git commit -m "add gin"