geektutu / blog

极客兔兔的博客,Coding Coding 创建有趣的开源项目。
https://geektutu.com
Apache License 2.0
166 stars 21 forks source link

路由组嵌套 #137

Closed loveyu233 closed 2 years ago

loveyu233 commented 2 years ago
func (r *RouterGroup) AddRouter(method, comp string, handler HandlerFunc) {
   var prefixs []string
   this := r
   for true {
      if this.prefix == "" {
         break
      }
      prefixs = append(prefixs, this.prefix)
      this = this.parent
   }
   prefix := ""
   for i := len(prefixs) - 1; i >= 0; i-- {
      prefix += prefixs[i]
   }
   pattern := prefix + comp
   fmt.Println(pattern)
   r.engine.router.addRouter(method, pattern, handler)
}

这里这样改一下可以支持多层的嵌套,原来呢样只能嵌套一层

例如:

v1 := r.Group("/v1")
p1 := v1.Group("/p1")
x1 := p1.Group("/x1")
x1.Get("/hello/:name", func(ctx *gee.Context) {
   ctx.Json(200, gee.H{
      "name": ctx.Params["name"],
   })
})
loveyu233 commented 2 years ago

发错位置了,要发gee的第四天评论来着,点错了发到这里了