使用 gin 进行简单的项目开发
第一个简单的 Web 服务
首先我们需要将 gin 的源码从 GitHub 中拉取下来,在终端中输入以下代码
go get github.com/gin-gonic/gin
接着我们在根目录创建一个 main.go 文件,先把 gin 的样例代码跑一遍,看有没有问题
package main
import (
"net/http"
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"message": "pong",
})
})
r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}
在 Postman ,Apipost或者其他软件进行一下测试,我这里就直接在终端测试了
在测试软件上测试就是新创一个接口,接口url是127.0.0.1:8080/ping,使用GET方法发送,这个信息便会返回看见
curl 127.0.0.1:8080/ping
输出
{"message":"pong"}
如果输出和我一样的话说明没有问题,咱们的第一个 Web 服务就运行成功了。
解析第一个 Web 服务
首先第一行我们将 gin.Default() 赋值给了 r,进入到源码中我们可以知道调用 gin.Default() 会返回已附加 Logger 和 Recovery 中间件的 Engine 实例。这里的 r 就是我们的 Engine 实例。
// gin 源码
// 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 中间件简单说就是一个是用于记录日志的,另一个是用于捕获程序问题并让程序恢复使用的。
当然我们也可以直接不使用 Default
再到下面的五行,是我们的 Engine 实例调用 GET 实现了一个 GET 请求的接口,"/ping"为我们的路径,后面的一坨是我们的详细逻辑。如果我们把它抽离出来会更好理解
网站上一串域名后面加上/xxx/xxx,就是这个东西
func main() {
r := gin.Default()
r.GET("/ping", Ping)
r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}
func Ping(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"message": "pong",
})
}
这样是不是清晰了很多,我们通过 GET 请求访问 "/ping" 就会获得一个 JSON 格式的返回值。
最后的 r.Run() 代表我们服务监听在 localhost:8080 。
localhost 和 127.0.0.1 是一个意思,都代表本地。