Skip to content

Gin路由

简单路由示例

  • 响应 字符串 格式
go
package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

func main() {
	r := gin.Default()
	r.GET("/hello", func(c *gin.Context) {
		c.String(http.StatusOK, "Hello World")
	})

	r.POST("/user/list", func(c *gin.Context) {
		c.String(http.StatusOK, "user list")
	})

	r.PUT("/user/add", func(c *gin.Context) {
		c.String(http.StatusOK, "user add")
	})

	r.DELETE("/user/delete", func(c *gin.Context) {
		c.String(http.StatusOK, "user delete")
	})

	r.Run(":9999") // 指定端口号,默认端口号:8080
}

访问:localhost:9999/hello

  • 响应 JSON 格式
go
package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

func main() {
	r := gin.Default()
	r.GET("/user/info", func(c *gin.Context) {
		c.JSON(http.StatusOK, gin.H{
			"code":    200,
			"message": "success",
			"data": map[string]any{
				"userid":   1,
				"username": "hello",
			},
		})
	})
	r.Run()
}

访问:localhost:8080/user/info

路由组

go
package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

func main() {
	r := gin.Default()

	user := r.Group("/user")
	{
		user.GET("/info", func(c *gin.Context) {
			c.JSON(http.StatusOK, gin.H{
				"code":    200,
				"message": "success",
				"data": map[string]any{
					"userid":   1,
					"username": "hello",
				},
			})
		})
		// ...
	}

	r.Run()
}

访问:localhost:8080/user/info

路由文件抽离封装

创建路由目录 router

shell
mkdir router && cd router
touch router.go

配置路由文件 router.go

go
package router

import (
	"gin/controllers"
	"github.com/gin-gonic/gin"
)

func Router() *gin.Engine {
	r := gin.Default()
	param := r.Group("/param")
	{
		param.GET("/GetParam/:id", controllers.ParamController{}.GetParam)
		param.GET("/GetParams/:cid/:name", controllers.ParamController{}.GetParams)
		param.POST("/PostParam", controllers.ParamController{}.PostParam)
		param.POST("/PostJsonParam", controllers.ParamController{}.PostJsonParam)
		param.POST("/PostJsonByStructParam", controllers.ParamController{}.PostJsonByStructParam)
	}

	return r
}
最近更新