首页 > 其他分享 >go fiber:使用独立的routes文件组织controller

go fiber:使用独立的routes文件组织controller

时间:2024-11-16 12:44:01浏览次数:1  
标签:fiber 文件组织 go controller func routes return

一,go代码:

controller/articleController.go

package controller

import "github.com/gofiber/fiber/v2"

type ArticleController struct{}

func NewArticleController() *ArticleController {
	return &ArticleController{}
}

func (dc *ArticleController) GetArticle(c *fiber.Ctx) error {
	// 处理获取文章的逻辑
	return c.SendString("获取文章信息")
}

func (dc *ArticleController) CreateArticle(c *fiber.Ctx) error {
	// 处理创建文章的逻辑
	return c.SendString("创建文章")
}

controller/userController.go

package controller

import "github.com/gofiber/fiber/v2"

type UserController struct{}

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

func (dc *UserController) GetUser(c *fiber.Ctx) error {
	// 处理获取用户的逻辑
	return c.SendString("获取用户信息")
}

func (dc *UserController) CreateUser(c *fiber.Ctx) error {
	// 处理创建用户的逻辑
	return c.SendString("创建用户")
}

routes/routes.go

package routes

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

func SetupRoutes(app *fiber.App) {
	//文章模块
	articleController := controller.NewArticleController()
	article := app.Group("/article")
	article.Get("/info", articleController.GetArticle)
	article.Post("/", articleController.CreateArticle)

	//用户模块
	userController := controller.NewUserController()
	user := app.Group("/user")
	user.Get("/info", userController.GetUser)
	user.Post("/", userController.CreateUser)
}

main.go

package main

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

func main() {

	app := fiber.New()

	// 设置路由
	routes.SetupRoutes(app)

	// 启动服务器
	err := app.Listen(":3000")
	if err != nil {
		return
	}

}

二,测试效果:

$ ./industry 

 ┌───────────────────────────────────────────────────┐ 
 │                   Fiber v2.52.5                   │ 
 │               http://127.0.0.1:3000               │ 
 │       (bound on host 0.0.0.0 and port 3000)       │ 
 │                                                   │ 
 │ Handlers ............. 6  Processes ........... 1 │ 
 │ Prefork ....... Disabled  PID .............. 2558 │ 
 └───────────────────────────────────────────────────┘ 

 

标签:fiber,文件组织,go,controller,func,routes,return
From: https://www.cnblogs.com/architectforest/p/18540508

相关文章

  • go fiber:全局中间件添加排除的path
    一,代码:全局中间件对所有的api生效,如果有个别不想应用全局中间件的api,则需要从代码中进行排除:例如:支付宝或微信的回调接口packagemiddlewareimport( "fmt" "github.com/gofiber/fiber/v2""regexp")funcApiSign(c*fiber.Ctx)error{//得到当前url ......
  • go fiber: 把异常信息写到错误日志中
    一,代码:1,userBusiness.gopackagebusinessimport("fmt")//得到多个用户,按分页返回funcGetUserList(pageint,pageSizeint)(string,error){b:=0a:=100/bfmt.Println(a)return"1,2,3",nil}代码中包含有除0错,会引发panic2,userControlle......
  • go fiber: 增加访问日志accesslog
    一,代码这里我们使用官方提供的github.com/gofiber/fiber/v2/middleware/logger这个现成的中间件官方文档地址:https://docs.gofiber.io/api/middleware/logger/routes.gopackageroutesimport( "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/middleware/......
  • go fiber: 多个全局中间件的执行顺序
    一,代码:middleware.gopackagemiddlewareimport( "fmt" "github.com/gofiber/fiber/v2")funcMiddle1(c*fiber.Ctx)error{ fmt.Println("middle1before") err:=c.Next() fmt.Println("middle1after") returnerr}......
  • go fiber:路由中间件
    一,目录结构:二,代码1,中间件代码packagemiddlewareimport( "fmt" "github.com/gofiber/fiber/v2" "industry/config")//token校验funcCheckUser(c*fiber.Ctx)error{ token:=c.Query("token") fmt.Println("token:"......
  • go fiber: 抛出自定义异常
    一,代码:1,自定义错误类:packageconfigimport("fmt")//定义错误代码和错误信息typeMyErrorstruct{CodeintMsgstring}//需要定义通用的Error()方法func(eMyError)Error()string{returnfmt.Sprintf("Code:%d,Msg:%s",e.Code,e.M......
  • go: 安装第三方库/web框架go fiber
    一,官网https://gofiber.io/中文文档:https://docs.fiber.org.cn/二,初始化项目:$gomodinitmyfibergo:creatingnewgo.mod:modulemyfibergo:toaddmodulerequirementsandsums:gomodtidy查看内容:$morego.modmodulemyfibergo1.23.3三,安装g......
  • Nuxt.js 应用中的 prerender:routes 事件钩子详解
    title:Nuxt.js应用中的prerender:routes事件钩子详解date:2024/11/6updated:2024/11/6author:cmdragonexcerpt:prerender:routes是Nuxt.js中的一个钩子,允许开发者在预渲染过程中扩展要预渲染的路由列表。这对于静态站点生成(SSG)尤为重要,开发者可以根据需求添加额......
  • 数据库系统------文件组织
    数据库的存储是由一系列文件组成的,每个文件存储一系列的记录,每条记录存储一系列的字段记录在文件中的组织定长记录的存储定长记录就是每条记录都是固定长度的,那么也就是说记录存储的位置是固定的,假设每条记录占用n字节,那么记录i(i>=1),它的偏移字节数(相对于开头)就......
  • vue后台element,routes实现动态路由控制权限管理
    前言整体流程大概说下,在登陆成功之后,需要后端把角色权限的路由返给我们,我们再根据角色权限把后端给的路由在本地存储,在router/index的路由控制页面用beforeEach钩子函数中做动态路由的处理,把角色权限渲染到页面中。一、login页面处理登陆成功之后需要把拿到的路由固定js......