go fiber:路由中介軟體

刘宏缔的架构森林發表於2024-11-16

一,目錄結構:

go fiber:路由中介軟體

二,程式碼

1,中介軟體程式碼

package middleware

import (
	"fmt"
	"github.com/gofiber/fiber/v2"
	"industry/config"
)

// token校驗
func CheckUser(c *fiber.Ctx) error {
	token:=c.Query("token")
	fmt.Println("token:",token)
	if token == "" {
		return c.Status(200).JSON(config.Error("引數token不存在"))
	} else {
		if token == "123" {
			var userId = 4
			c.Locals("userId", userId)
		} else {
			return c.Status(200).JSON(config.Error("引數token錯誤"))
		}
	}
	return c.Next()
}

2,控制器

func NewUserController() *UserController {
	return &UserController{}
}

func (uc *UserController) GetUser(c *fiber.Ctx) error {

	fmt.Println("hello","user")
	userId := c.Locals("userId")
	str2 := fmt.Sprintf("%v", userId)
	fmt.Println(str2)
	// 處理獲取使用者的邏輯
	return c.SendString("獲取使用者資訊userId:"+str2)
}

func (uc *UserController) CreateUser(c *fiber.Ctx) error {
	// 處理建立使用者的邏輯
	userId := c.Locals("userId")
	str2 := fmt.Sprintf("%v", userId)
	fmt.Println(str2)
	return c.SendString("建立使用者:"+str2)
}

3,路由:

package routes

import (
	"github.com/gofiber/fiber/v2"
	"industry/config"
	"industry/controller"
	"industry/middleware"
)

func SetupRoutes(app *fiber.App) {

	//使用者模組
	userController := controller.NewUserController()
	user := app.Group("/user")
	user.Get("/info" ,middleware.CheckUser, userController.GetUser)
	user.Get("/add", userController.CreateUser)

	//找不到路徑時的處理
	app.Use(func(c *fiber.Ctx) error {
		return c.Status(fiber.StatusNotFound).JSON(config.Error("不存在的訪問路徑"))
	})

}

也可以把中介軟體新增給整組,如下:

	//使用者模組
	userController := controller.NewUserController()
	user := app.Group("/user",middleware.CheckUser)
	user.Get("/info" , userController.GetUser)
	user.Get("/add", userController.CreateUser)

三,測試效果:

go fiber:路由中介軟體

相關文章