而不是像main那样在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
// ...
}
答案 0 :(得分:0)
Echo对象没有此方法。我认为您需要代码?
API.go:
package main
import "github.com/labstack/echo"
func UseSubroute(echo *echo.Echo) {
echo.GET("/api", sayHello)
echo.GET("/api/music", getMusic)
echo.GET("/api/user/:id", getDetail)
echo.POST("/api/user", addUser)
}
main.go:
package main
import "github.com/labstack/echo"
func main() {
e := echo.New()
UseSubroute(e)
}
这两个文件需要放在同一目录中。
您需要吗?
答案 1 :(得分:0)
您可以做的是使用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)
// ...
}
答案 2 :(得分:0)
基于@Andy的想法,我提出了一个支持可分离的嵌套路由的解决方案。
当前文件夹结构如下:
server.go
...其中main
是项目的主要条目,属于index.go
包,而music.go
和routes
属于"/api" -> index.go
"/api/music" -> music.go
包。 / p>
端点是
index.go
首先在func UseRoute(group *echo.Group, routes func(group *echo.Group)) {
routes(group)
}
中定义一个用于在此级别使用路由的函数。
server.go
然后
在func main() {
e := echo.New()
apiGroup := e.Group("/api")
routes.ActivateIndex(mainGroup)
}
index.go
在var mainGroup *echo.Group
func ActivateIndex(g *echo.Group) {
mainGroup = g
UseRoute(mainGroup, IndexRoutes)
// sub routes
musicGroup := mainGroup.Group("/music")
ActivateMusic(musicGroup)
}
music.go
和var musicGroup *echo.Group
func ActivateMusic(g *echo.Group) {
musicGroup = g
UseRoute(musicGroup, MusicRoutes)
}
IndexRoutes
注意:MusicRoutes
,func IndexRoutes(group *echo.Group) {
group.GET("/", sayHello)
group.GET("/user/:id", getDetail)
group.POST("/user", addUser)
}
等是在此级别上指定端点的函数。
例如
.go
通过这种方式,可以在不同的ActivateHiphop
文件中定义路由,从而使业务逻辑更加清晰。
例如,要扩展嵌套级别,我们可以在hiphop.go
中创建另一个ActivateMusic
函数,还可以从music.go
的{{1}}函数处导入新的子路由,这样"/api/music/hiphop"
可以指向hiphop.go
。
p.s。要在/api
级添加更多路由,只需在IndexRoutes
函数中创建更多端点即可。