在开始写代码之前,我们需要先把环境准备好。这一章会带你完成 Gin 的安装和项目初始化。
现在 Go 项目都用 Go Modules 管理依赖,Gin 也不例外。先创建一个新项目:
mkdir myapp
cd myapp
go mod init myapp
然后安装 Gin:
go get -u github.com/gin-gonic/gin
这条命令会把 Gin 下载到你的项目依赖中。-u 参数表示使用最新版本。
创建一个 main.go 文件测试一下:
package main
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
r.Run()
}
运行:
go run main.go
如果看到类似输出,说明安装成功:
[GIN-debug] Listening and serving HTTP on :8080
访问 http://localhost:8080/ping,应该能看到 {"message":"pong"}。
一个典型的 Gin 项目结构如下:
myapp/
├── main.go
├── go.mod
├── go.sum
├── config/
│ └── config.go
├── controllers/
│ └── user.go
├── middlewares/
│ └── auth.go
├── models/
│ └── user.go
├── routes/
│ └── routes.go
└── utils/
└── helper.go
这种结构把不同功能的代码分开放,项目大了之后比较好维护。
| 目录 | 用途 |
|---|---|
| config | 配置相关代码 |
| controllers | 控制器,处理请求逻辑 |
| middlewares | 中间件 |
| models | 数据模型 |
| routes | 路由定义 |
| utils | 工具函数 |
先从一个简单的结构开始。创建以下文件:
main.go
package main
import (
"myapp/routes"
)
func main() {
r := routes.SetupRouter()
r.Run(":8080")
}
routes/routes.go
package routes
import (
"github.com/gin-gonic/gin"
"myapp/controllers"
)
func SetupRouter() *gin.Engine {
r := gin.Default()
r.GET("/", controllers.Index)
r.GET("/users", controllers.GetUsers)
return r
}
controllers/user.go
package controllers
import (
"github.com/gin-gonic/gin"
)
func Index(c *gin.Context) {
c.JSON(200, gin.H{
"message": "Welcome to my app",
})
}
func GetUsers(c *gin.Context) {
c.JSON(200, gin.H{
"users": []string{"Alice", "Bob", "Charlie"},
})
}
运行 go run main.go,访问 http://localhost:8080/users 就能看到用户列表了。
国内访问 Go 的代理可能比较慢,可以设置代理:
go env -w GOPROXY=https://goproxy.cn,direct
如果遇到版本问题,可以清理缓存重新下载:
go clean -modcache
go mod download
这一章我们完成了:
现在环境已经准备好了,下一章我们开始写第一个 Gin 应用。