首页 > 其他分享 >go fiber:路由中间件

go fiber:路由中间件

时间:2024-11-16 12:29:30浏览次数:1  
标签:fiber return 中间件 fmt userId token user go

一,目录结构:

二,代码

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)

三,测试效果:

标签:fiber,return,中间件,fmt,userId,token,user,go
From: https://www.cnblogs.com/architectforest/p/18542644

相关文章

  • django naive datetime问题
    naivedatetime问题,其实就是datetime数据没有携带时间就传递给了模型类现象:D:\anaconda3\envs\schedule_devops\lib\site-packages\django\db\models\fields_init_.py:1367:RuntimeWarning:DateTimeFieldNodeStopRecord.stop_timereceivedanaivedatetime(2024-11-1602:......
  • Let'sGoFurther - Chapter 6: SQL Migrations
      InstallingthemigratetoolTomanageSQLmigrationsinthisprojectwe’regoingtousethemigratecommand-line tool(whichitselfiswritteninGo).OnLinuxandWindows,theeasiestmethodistodownloadapre-builtbinaryandmove ittoalocat......
  • 通过MongoDB Atlas 实现语义搜索与 RAG——迈向AI的搜索机制
    目录通过MongoDBAtlas实现语义搜索与RAG——迈向AI的搜索机制一、引言二、语义搜索与MongoDBAtlas的背景三、MongoDBAtlas的向量搜索功能1.向量搜索的实现方式2.典型操作示例四、RAG在MongoDBAtlas的应用1、RAG是什么2、RAG的实现过程3、RAG的实际应......
  • Hyperf 微服务与 MongoDB 日志记录
    以下是关于在Hyperf微服务中使用MongoDB记录用户操作日志的相关技术详解: 一、Hyperf框架简介Hyperf是基于Swoole协程的高性能PHP微服务框架,它提供了诸多便捷的功能和组件,方便开发者快速构建高效、稳定的微服务应用。在微服务架构中,日志记录是非常重要的一环,有助于排查问题......
  • django 数据库ORM通用的公共函数
    通用查询1、公共函数:defgeneric_query(model,filter_kwargs=None,order_by=None,limit=None,aggregate=None,annotate=None):"""通用的DjangoORM查询函数。:parammodel:Django模型类:paramfilter_kwargs:过滤条件字典:paramorder_by:......
  • (mongodb副本集) PSA模式添加、修改节点
    (mongodb副本集)PSA模式添加、修改节点PSA模式介绍PSA模式(Primary-Secondary-Arbiter)是MongoDB复制集中的一种架构配置。在这种模式下,复制集由一个主节点(PRIMARY)、一个从节点(SECONDARY)和一个仲裁者节点(ARBITER)组成。在MongoDB的复制集中,仲裁者节点(Arbiter)是一种特殊类型的节点,......
  • (mongodb副本集) PSA模式添加、修改节点
    (mongodb副本集)PSA模式添加、修改节点PSA模式介绍PSA模式(Primary-Secondary-Arbiter)是MongoDB复制集中的一种架构配置。在这种模式下,复制集由一个主节点(PRIMARY)、一个从节点(SECONDARY)和一个仲裁者节点(ARBITER)组成。在MongoDB的复制集中,仲裁者节点(Arbiter)是一种特殊类型的节点,......
  • (mongodb副本集) PSA模式添加、修改节点
    (mongodb副本集)PSA模式添加、修改节点PSA模式介绍PSA模式(Primary-Secondary-Arbiter)是MongoDB复制集中的一种架构配置。在这种模式下,复制集由一个主节点(PRIMARY)、一个从节点(SECONDARY)和一个仲裁者节点(ARBITER)组成。在MongoDB的复制集中,仲裁者节点(Arbiter)是一种特殊类型的节点,......
  • GOAT‘S AI早鸟报Part4
    欢迎后台......
  • 基于python+django的Spark的国漫推荐系统的设计与实现
    前言基于python+django的Spark国漫推荐系统能为国漫爱好者提供精准的内容推荐。系统先收集大量国漫数据,包括国漫名称、类型、作者、制作公司、评分、播放量、剧情简介、人物设定等信息。利用Spark的分布式计算能力对这些数据进行处理和存储。在用户方面,当新用......