2025年3月28日 星期五 甲辰(龙)年 月廿七 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Go语言

Gin 快速入门

时间:03-07来源:作者:点击数:45

Go 版本要求

使用 Gin 框架之前,需要先检查本地 Go 语言版本,目前要求 Go 1.9 及以上版本,Go 1.7 及 1.8 版本将很快不再提供支持。

可以在命令行中通过 go version 命令查看:

-w677

安装 & 初始化项目

要安装 Gin 框架,可以通过设置 Go 命名空间或者 Go Module 两种方式,对于目前最新 Go 语言版本,推荐使用 Go Module,这样做的好处是可以通过设置 GOPROXY 的方式一劳永逸地解决网络问题,具体启用 Go Module 及设置 GOPROXY 的细节参考因网络问题导致 Go 语言依赖包下载慢或失败的几个解决方案这篇教程的介绍,我们这里假设你已经做好了相应的准备工作。

接下来,我们通过 Go Module 来初始化项目,在 src 目录下创建一个 gin-demo/basic 目录来存放快速入门项目的代码:

-w337

然后在 basic 目录下运行 go mod init gin-demo/basic 初始化下 go.mod 文件,并运行 go get -u github.com/gin-gonic/gin 下载 Gin 框架到本地:

-w602

Gin 扩展包下载完成后,即可下载项目示例代码到本地:

  • curl https://raw.githubusercontent.com/gin-gonic/examples/master/basic/main.go > main.go
-w916

main.go 中的示例代码如下所示:

  • package main
  • import (
  • "net/http"
  • "github.com/gin-gonic/gin"
  • )
  • // 通过字典模拟 DB
  • var db = make(map[string]string)
  • func setupRouter() *gin.Engine {
  • // 初始化 Gin 框架默认实例,该实例包含了路由、中间件以及配置信息
  • r := gin.Default()
  • // Ping 测试路由
  • r.GET("/ping", func(c *gin.Context) {
  • c.String(http.StatusOK, "pong")
  • })
  • // 获取用户数据路由
  • r.GET("/user/:name", func(c *gin.Context) {
  • user := c.Params.ByName("name")
  • value, ok := db[user]
  • if ok {
  • c.JSON(http.StatusOK, gin.H{"user": user, "value": value})
  • } else {
  • c.JSON(http.StatusOK, gin.H{"user": user, "status": "no value"})
  • }
  • })
  • // 需要 HTTP 基本授权认证的子路由群组设置
  • authorized := r.Group("/", gin.BasicAuth(gin.Accounts{
  • "foo": "bar", // 用户名:foo 密码:bar
  • "manu": "123", // 用户名:manu 密码:123
  • }))
  • // 保存用户信息路由
  • authorized.POST("admin", func(c *gin.Context) {
  • user := c.MustGet(gin.AuthUserKey).(string)
  • // 解析并验证 JSON 格式请求数据
  • var json struct {
  • Value string `json:"value" binding:"required"`
  • }
  • if c.Bind(&json) == nil {
  • db[user] = json.Value
  • c.JSON(http.StatusOK, gin.H{"status": "ok"})
  • }
  • })
  • return r
  • }
  • func main() {
  • // 设置路由信息
  • r := setupRouter()
  • // 启动服务器并监听 8080 端口
  • r.Run(":8080")
  • }

具体代码含义已经通过注释标注了,这里定义了三个路由,分别用于测试请求是否可以 Ping 通、获取用户信息及设置用户信息,下面我们启动这个应用:

  • go run main.go
-w868

可以看到 HTTP 服务器已经启动成功(默认以“debug”模式启动),并且打印出了路由信息。

我们可以通过 curl 在命令行测试这些路由:

-w743

 

-w1049

 

-w869

作为最基本的演示项目,你可以参考上述 main.go 的实现自定义自己的 HTTP 服务器和路由实现。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门