Skip to content

路由器

直接路由

无需路由器,直接代码路由

shell
router.GET("/", func (c *gin.Context) {
    c.JSON(200, gin.H{
    "msg": "hello world!",
  })
})

简易路由器

自定义路由文件,通过Group,简易分到各个模块

  1. 建立分路由 AdminRouter、ApiRouter
shell
func AdminRouterInit(r *gin.Engine) {
	adminRouters := r.Group("/admin")
	{
		adminRouters.GET("/", func(c *gin.Context) {
			c.JSON(200, "后台首页")
		})
		adminRouters.GET("/user", func(c *gin.Context) {
			c.JSON(200, "用户信息")
		})
	}
}
shell
func ApiRouterInit(r *gin.Engine) {
	apiRouters := r.Group("/api")
	{
		apiRouters.GET("/", func(c *gin.Context) {
			c.JSON(200, "api首页")
		})
		apiRouters.GET("/userList", func(c *gin.Context) {
			c.JSON(200, "api用户列表")
		})
	}
}
  1. 通过main导入
shell
func main() {
	router := gin.Default() //默认引擎

	// 导入路由器
	routers.AdminRouterInit(router)
	routers.ApiRouterInit(router)

	router.Run(":8000") //启动服务
}

模块化路由器

具备控制器MVC理念,分模块建立控制器

  1. 建立多个控制器 IndexController、UserController
shell
package controller

import "github.com/gin-gonic/gin"

type IndexController struct {
}

func (this IndexController) Index(c *gin.Context) {

	c.JSON(200, gin.H{
		"msg": "新首页",
	})
}
shell
package controller

import "github.com/gin-gonic/gin"

type UserController struct {
}

func (this UserController) Index(c *gin.Context) {

	c.JSON(200, gin.H{
		"msg": "用户新首页",
	})
}
  1. 路由器配置控制器
shell
package controller

import "github.com/gin-gonic/gin"

// 分模块路由器
func ZRouterInit(r *gin.Engine) {
	zRouter := r.Group("/controller")
	{
		zRouter.GET("/index", IndexController{}.Index)
		zRouter.GET("/user", UserController{}.Index)
	}

}
  1. main中导入路由器
shell
package main

import (
	"github.com/gin-gonic/gin"
	"main/internal/controller"
)

func main() {
	router := gin.Default() //默认引擎

	// 分模块路由器 导入
	controller.ZRouterInit(router)

	router.Run(":8000") //启动服务
}

启动,分别访问

shell
http://localhost:8000/controller/index
http://localhost:8000/controller/user

成功!