路由分组

通过Group可以实现路由分组,Group 路由分组可以简化你的路由撰写:

有两种方法来使用Group:

第一种,创建Group对象,通过Group方法传入

  1. g := tango.NewGroup()
  2. g.Get("/1", func() string {
  3. return "/1"
  4. })
  5. g.Post("/2", func() string {
  6. return "/2"
  7. })
  8. o := tango.Classic()
  9. o.Group("/api", g)

以上代码执行后,访问 /api/1 将执行函数1, /api/2 将执行函数2.

第二种方法,直接传入带Group为参数的函数:

  1. o := tango.Classic()
  2. o.Group("/api", func(g *tango.Group) {
  3. g.Get("/1", func() string {
  4. return "/1"
  5. })
  6. g.Post("/2", func() string {
  7. return "/2"
  8. })
  9. })

以上代码执行后,访问 /api/1 将执行函数1, /api/2 将执行函数2.

同时, Group 也支持子 Group:

  1. o := tango.Classic()
  2. o.Group("/api", func(g *tango.Group) {
  3. g.Group("/v1", func(cg *tango.Group) {
  4. cg.Get("/1", func() string {
  5. return "/1"
  6. })
  7. cg.Post("/2", func() string {
  8. return "/2"
  9. })
  10. })
  11. })

以上代码执行后,访问 /api/v1/1 将执行函数1, /api/v1/2 将执行函数2.

有时候,我们仅仅只是想逻辑上分组,而这些请求路径并没有共同的父路径,那么也是可以的,代码如下:

  1. o := tango.Classic()
  2. o.Group("", func(g *tango.Group) {
  3. g.Get("/1", func() string {
  4. return "/1"
  5. })
  6. })
  7. o.Group("", func(g *tango.Group) {
  8. g.Post("/2", func() string {
  9. return "/2"
  10. })
  11. })

以上代码执行后,访问 /1 将执行函数1, /2 将执行函数2.

分组中间件

最后,我们也可以将中间件应用于Group之上,用group的Use方法。

  1. o := tango.Classic()
  2. o.Group("/api/v1", func(g *tango.Group) {
  3. g.Use(handlers...)
  4. g.Get("/1", func() string {
  5. return "/1"
  6. })
  7. })