3 回答

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超18個(gè)贊
您可以做的就是使用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)
}
主要是你可以導(dǎo)入你的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貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超8個(gè)贊
Echo對(duì)象沒(méi)有這個(gè)方法。我想你需要代碼嗎?
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)
}
這兩個(gè)文件需要放在同一目錄下。
你需要它嗎?

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個(gè)贊
我提出了一個(gè)解決方案,支持可拆卸的嵌套路由。
當(dāng)前文件夾結(jié)構(gòu)如下:
.
├── routes
│? ?├── index.go
│? ?└── music.go
└── server.go
...whereserver.go是項(xiàng)目主入口,屬于main包,而index.go和music.go屬于routes包。
端點(diǎn)是
"/api"? ? ? ?-> index.go
"/api/music" -> music.go
首先,index.go我們定義一個(gè)在該級(jí)別使用路由的函數(shù)。
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是指定該級(jí)別端點(diǎn)的函數(shù)。
例如
func IndexRoutes(group *echo.Group) {
? ? group.GET("/", sayHello)
? ? group.GET("/user/:id", getDetail)
? ? group.POST("/user", addUser)
}
這樣就可以將路由定義在不同的.go文件中,使業(yè)務(wù)邏輯更加清晰。
例如,為了擴(kuò)展嵌套級(jí)別,我們可以ActivateHiphop在 中創(chuàng)建另一個(gè)函數(shù),并在函數(shù) fromhiphop.go中導(dǎo)入新的子路由,以便可以指向。ActivateMusicmusic.go"/api/music/hiphop"hiphop.go
ps 要在關(guān)卡中添加更多路由/api,只需在函數(shù)中創(chuàng)建更多端點(diǎn)即可IndexRoutes。
- 3 回答
- 0 關(guān)注
- 172 瀏覽
添加回答
舉報(bào)