Exemplo n.º 1
0
// 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
}
Exemplo n.º 2
0
// 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
}
Exemplo n.º 3
0
// 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
}
Exemplo n.º 4
0
// 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
}