gin 框架初识

发布于 / 1年前 - 更新于 / 1年前


跑起来 gin

起初按照文档https://learnku.com/docs/gin-gonic/2019/quickstart/6151始终跑步起来,各种错误,最终网上搜索得出答案 go.mod

  1. 创建项目目录 gin-blog,并在目录下新建 go.modmain.go 文件
  2. 编辑 go.mod 依赖gin框架
module gin-blog go 1.4 require github.com/gin-gonic/gin latest
  1. 编辑 main.go 文件 gin 跑起来
package main import ( "github.com/gin-gonic/gin" ) func main() { r := gin.Default() r.GET("/hello", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "hello gin!", }) }) r.Run() // 监听并在 0.0.0.0:8080 上启动服务 }

运行 go run main.go , 浏览器输入 http://localhost:8080/hello 会输出 {“message”:“hello gin!”}

搭建自己的 gin 应用程序

上面我们已经把 gin 框架跑起来了,那么我们就可以用 gin 来做 爱做的事了

应用目录结构之 routes

创建文件夹 routes 并创建路由文件 router.go,api.go,admin.go 内容如下

// router.go package routes import "github.com/gin-gonic/gin" func Register() *gin.Engine { router := gin.Default() ApiRouter(router) AdminRouter(router) router.GET("/hello", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "hello gin!", }) }) return router }
// api.go package routes import "github.com/gin-gonic/gin" func ApiRouter(router *gin.Engine) { router.GET("/api", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "hello api!", }) }) }
// admin.go package routes import "github.com/gin-gonic/gin" func AdminRouter(router *gin.Engine) { router.GET("/admin", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "hello admin!", }) }) }

那么此时main.go内容就如下了

package main import ( "gin-blog/routes" ) func main() { router := routes.Register() router.Run() }

那么在浏览器分别输入 http://localhost:8080/hello,http://localhost:8080/api,http://localhost:8080/admin。分别显示不同的内容
从此api的路由就写在api.go,admin路由就写在admin.go,后面可再拆分。

应用目录结构之控制器 controllers

创建文件夹 controllers 并创建admin和api文件夹,分别增加admin.go和api.go文件

// api.go package api import "github.com/gin-gonic/gin" func Index(c *gin.Context) { c.JSON(200, gin.H{ "message": "controllers api!", }) }

此时routes/api.go

package routes import ( "gin-blog/controllers/api" "github.com/gin-gonic/gin" ) func ApiRouter(router *gin.Engine) { router.GET("/api", api.Index) }

controllers/admin.go 和 routes/admin.go 同上

本作品采用《CC 协议》,转载必须注明作者和本文链接