// NewSpaceRouter 创建空间路由 // name:路由名称 // return:执行成功则返回router.Router func NewSpaceRouter(name string) router.Router { var r, err = router.NewRouter("base", name, name) if err != nil { panic(err) } return r }
// HttpResultRouter 生成Http方法名路由 func HttpResultRouter(resultName string, gen router.RouterExcutorGenerator) []router.Router { var rs = make([]router.Router, 0, 1) for _, httpMethod := range HttpMethodName(resultName) { var hr, err3 = router.NewRouter("base", httpMethod, nil) if err3 != nil { panic(err3) } hr.SetRouterExcutorGenerator(gen) rs = append(rs, hr) } return rs }
// NewStaticRouter 创建静态文件路由,只能匹配Get类型的文件请求,返回指定的文件 // name:路由名称 // path:文件目录路径 // return:执行成功则返回router.Router func NewStaticRouter(name string, path string) router.Router { var mr, err = router.NewRouter("unlimited", name, name) if err != nil { panic(err) } var excutor = NewStaticExecutor(path) mr.SetRouterExcutorGenerator(func() router.RouterExcutor { return excutor }) var pathRouter = NewSpaceRouter(name) pathRouter.AddChild(mr) return pathRouter }
// NewMutableFuncRouter 创建函数路由,可匹配无限层级和任意http方法的请求 // name:路由名称 // function:函数 // 函数必须满足如下格式: // func Method(param *ParamStruct) web.Result // param:可以没有或者有多个,如果有则类型必须为结构体指针类型 // 第一个返回结果最好是能够赋值给web.Result接口,也可以是其他类型 // return:执行成功则返回router.Router func NewMutableFuncRouter(name string, function interface{}) router.Router { var v = reflect.ValueOf(function) var mMd, err = meta.AnalyzeMethod(name, &v) if err != nil { panic(err) } var mr, err2 = router.NewRouter("unlimited", name, name) if err2 != nil { panic(err2) } var excutor = NewAdvancedExecutor(mMd) mr.SetRouterExcutorGenerator(func() router.RouterExcutor { return excutor }) return mr }