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 關注
- 163 瀏覽
添加回答
舉報