fiberboot
FiberBoot 是一个能够简化 Fiber 框架下路由管理的库
核心思想是通过 FiberBoot 注册 Fiber 的实例和路由群组,然后在每个 Controller 的 init 中各自注册自己的路由回调函数,再统一由 FiberBoot 控制群组和路由回调函数的加载顺序,减少路由间的耦合
FiberBoot 是非线程安全的(因为 FiberBoot 的业务需要在 Fiber 服务启动前加载并运行完毕,所以无需考虑并发,也不建议在此期间出现并发问题)
Installation
$ go get -u github.com/gokit/fiberboot
Quick start
package main
import (
"github.com/gofiber/fiber"
"github.com/gokit/fiberboot"
_ "github.com/gokit/fiberboot/example/controller" // 加载 controller 包下的 init 函数,注册路由相关的回调函数
)
func main() {
app := fiber.New()
// 注册默认的 Fiber 实例并运行
fiberboot.Strap(app)
app.Listen(3000)
}
controller
package controller
import (
"github.com/gofiber/fiber"
"github.com/gokit/fiberboot"
)
type IndexController struct{}
func init() {
// 向默认的 Gin 中注册路由
fiberboot.Route(new(IndexController).registerRoutes)
}
func (i *IndexController) registerRoutes(app *fiber.App) {
app.Get("/", i.index)
}
func (IndexController) index(c *fiber.Ctx) {
c.SendString("hello world")
}
注册路由群组
package controller
import (
"github.com/gofiber/fiber"
"github.com/gokit/fiberboot"
)
const GroupUser = "/user"
const GroupAdmin = "/admin"
func init() {
fiberboot.Group(func(app *fiber.App) {
app.AddGroup(GroupUser, app.Group("/user"))
app.AddGroup(GroupAdmin, app.Group("/admin"))
})
}
更多其他相关方法
// 注册一个指定 name 的 Group 实例
func AddGroup(name string, group *fiber.Group)
// 向指定的 Fiber 实例中注入中间件回调
func Middleware(callback func(app *fiber.App))
// 向指定的 Fiber 实例中注入路由回调
func Route(callback func(app *fiber.App))
// 向指定的 Fiber 实例中注入路由群组回调
func Group(callback func(app *fiber.App))
// 向指定 name 的路由群组中中注入路由回调
func GroupByName(groupName string, callback func(group *fiber.Group))
// 在注册 Fiber 实例后,启用引导程序引导回调,fiberboot 会优先调用路由群组的回调函数,然后再调用路由的回调函数
func Strap(app *fiber.App)