如何在Go Fiber V2中从单独的文件设置路由组?

htrmnn0y  于 2023-09-28  发布在  Go
关注(0)|答案(2)|浏览(118)

我想为每个子主要路线单独的文件。我用的是go 1.17
main.go

package main

import (
    "rolling_glory_go/routes"

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

func main() {
    app := fiber.New()

    app.Get("/", func(c *fiber.Ctx) error {
        err := c.SendString("Hello golang!")
        return err
    })

    routes.R_login(app.Group("/login"))
    routes.R_users(app.Group("/users"))

    app.Listen(":3000")
}

我想从r_login.gor_users.go导入路由,这样我就可以管理来自不同文件的多个路由,而不会将来自单个文件的多个路由放在main.go中。我得到了一个这样的错误。

.\main.go:17:26: cannot use app.Group("/login") (type fiber.Router) as type *fiber.Group in argument to routes.R_login: need type assertion
.\main.go:18:26: cannot use app.Group("/users") (type fiber.Router) as type *fiber.Group in argument to routes.R_users: need type assertion

我的结构文件夹

r_login.go

package routes

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

func R_login(router *fiber.Group) {
    router.Get("/", func(c *fiber.Ctx) error {
        return c.SendString("respond with a resource")
    })
}

r_users.go

package routes

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

func R_users(router *fiber.Group) {
    router.Get("/", func(c *fiber.Ctx) error {
        return c.SendString("respond with a resource")
    })
}

如何解决这个问题?

iszxjhcz

iszxjhcz1#

因为你有app.Group("/login"),它的类型是fiber.Router,只需修改R_login,让它接受这个类型。

package routes

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

func R_login(router fiber.Router) {
    router.Get("/", func(c *fiber.Ctx) error {
        return c.SendString("respond with a resource")
    })
}
oyjwcjzk

oyjwcjzk2#

如果有人仍然有问题,我将在fiber/v2中执行此操作

func BookRouter(router fiber.Router) {
    router.Get("/", GetBook)
    router.Get("/all", GetBooks)
    router.Post("/", NewBook)
    router.Delete("/", DeleteBook)
}
 
    books := app.Group("/book")  //server.go
    books.Route("/", book.BookRouter)

相关问题