3 回答
TA贡献1853条经验 获得超18个赞
您可以做的就是使用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)
// ...
}
TA贡献1804条经验 获得超8个赞
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)
}
这两个文件需要放在同一目录下。
你需要它吗?
TA贡献1801条经验 获得超16个赞
我提出了一个解决方案,支持可拆卸的嵌套路由。
当前文件夹结构如下:
.
├── routes
│ ├── index.go
│ └── music.go
└── server.go
...whereserver.go是项目主入口,属于main包,而index.go和music.go属于routes包。
端点是
"/api" -> index.go
"/api/music" -> music.go
首先,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在 中创建另一个函数,并在函数 fromhiphop.go中导入新的子路由,以便可以指向。ActivateMusicmusic.go"/api/music/hiphop"hiphop.go
ps 要在关卡中添加更多路由/api,只需在函数中创建更多端点即可IndexRoutes。
- 3 回答
- 0 关注
- 119 浏览
添加回答
举报