路由 Router
1. Yago 路由注册分为两个阶段:
- step1. 在各个控制器的 init 函数中完成一个 Controller 内具体的 Action 级别的路由注册,详细使用请参考 模块控制器
func init() {
userHttp := new(UserHttp)
userGroup := yago.NewHttpGroupRouter("/user") // 创建路由分组
userGroup.Get("/hello", userHttp.HelloAction)
userGroup.Post("/add", userHttp.AddAction)
userGroup.Post("/delete", userHttp.DeleteAction)
userGroup.Get("/detail", userHttp.DetailAction)
userGroup.Post("/update", userHttp.UpdateAction)
userGroup.Post("/list", userHttp.ListAction)
userGroup.Post("/base-list", userHttp.BaseListAction)
userGroup.Post("/upload", userHttp.UploadAction)
userGroup.Get("/user/:name", userHttp.Hello2Action)
userGroup.Get("/cookie", userHttp.CookieAction)
userGroup.Get("/metadata", userHttp.MetadataAction).WithMetadata(HttpMetadata{
Label: "自定义HTTP名称",
}) // 注册 API metadata 信息
memberGroup := yago.NewHttpGroupRouter("/user/member", homemiddleware.CheckUserName) // 对路由分组使用中间件
{
memberGroup.Post("/:name", userHttp.UserSetAction)
memberGroup.Get("/:name", userHttp.UserGetAction)
memberGroup.Put("/:name", userHttp.UserUpdateAction)
memberGroup.Delete("/:name", userHttp.UserDeleteAction)
consumeSubGroup := memberGroup.Group("/plus")
consumeSubGroup.Patch("/number/:number", homemiddleware.Compute, userHttp.PlusAction) // 对单个 API 使用中间件
}
yago.SetHttpNoRouter(userHttp.NoRouterAction) // 注册 404 页面
}
- step2. 在 app/route/route.go import 函数中完成各个模块的 Controller 级别的路由注册
package route
import (
_ "github.com/hulklab/yago/example/app/modules/home/homecmd"
_ "github.com/hulklab/yago/example/app/modules/home/homehttp"
_ "github.com/hulklab/yago/example/app/modules/home/homerpc"
_ "github.com/hulklab/yago/example/app/modules/home/hometask"
)
注:使用
yago new -m ${module}
创建新模块时,会自动加载到 app/route/route.go 文件中,不需要手动添加。