首页 > 解决方案 > 如何从其他包中导入子路由

问题描述

而不是在 main() 下编写每条路由,例如

func main() {
    e := echo.New()
    e.GET("/api", sayHello)
    e.GET("/api/music", getMusic)
    e.GET("/api/user/:id", getDetail)
    e.POST("/api/user", addUser)
    // ...
}

如何从名为 的文件中导入这些所有子路由api.go,并在主函数中使用这些子路由?如同

import "./API"
func main() {
    e := echo.New()
    e.UseSubroute(API.Routes) // <-- similar to this
    // ...
}

标签: restgoroutesmiddlewarego-echo

解决方案


您可以做的是使用echo.Group并将其传递给api包,并在那里初始化路由处理程序。

package api

import (
    "github.com/labstack/echo"
)

func UseSubroute(group *echo.Group)  {
    group.GET("/", sayHello)
    group.GET("/music", getMusic)
    group.GET("/user/:id", getDetail)
    group.POST("/user", addUser)
}

主要是你可以导入你的api包。

package main

import (
    "github.com/labstack/echo"
    "your-repo/path-to/api" // your api package
)

func main() {
    e := echo.New()
    apiGroup := e.Group("/api")
    api.UseSubroute(apiGroup)
    // ...
}

推荐阅读