gin框架 | 青训营笔记

73 阅读2分钟

使用 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 是一个意思,都代表本地。