5.2 gin 路由树的实现(扩展)
与 cobra 相比, gin 的路由树实现就是另外一种方式了, 我称之为 生长。 换句话说, gin 路由的子节点不能独立于父节点 单独 定义。
// Group creates a new router group. You should add all the routes that have common middlewares or the same path prefix.
// For example, all the routes that use a common middleware for authorization could be grouped.
func (group *RouterGroup) Group(relativePath string, handlers ...HandlerFunc) *RouterGroup {
return &RouterGroup{
Handlers: group.combineHandlers(handlers),
basePath: group.calculateAbsolutePath(relativePath),
engine: group.engine,
}
}
从上面代码可以看出来, RouterGroup
是通过 Group
方法实现路由节点 生长 的, 在调用 Group
方法的时候,
- 必须 要传入 子节点 的相对路径
- 使用私有方法计算出
basePath
的值。
这个特别像怀孕生孩子, 一代接一代。 绝对错不了。 O.o
。
肯定可以, 做个变形手术就好了。 这里挖个坑吧。