3 ZH_Group
dxvgef edited this page 2015-06-01 16:50:36 +08:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

路由分组

Group 路由分组可以简化你的路由撰写:

有两种方法来使用Group: 第一种创建Group对象通过Group方法传入

g := tango.NewGroup()
g.Get("/1", func() string {
    return "/1"
})
g.Post("/2", func() string {
    return "/2"
})

o := tango.Classic()
o.Group("/api", g)

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

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

o := tango.Classic()
o.Group("/api", func(g *tango.Group) {
    g.Get("/1", func() string {
	return "/1"
    })
    g.Post("/2", func() string {
	return "/2"
    })
})

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

同时, Group 也支持子 Group:

o := tango.Classic()
o.Group("/api", func(g *tango.Group) {
    g.Group("/v1", func(cg *tango.Group) {
        cg.Get("/1", func() string {
	    return "/1"
        })
        cg.Post("/2", func() string {
	    return "/2"
        })
    })
})

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

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

o := tango.Classic()
o.Group("", func(g *tango.Group) {
    g.Get("/1", func() string {
	return "/1"
    })
})

o.Group("", func(g *tango.Group) {
    g.Post("/2", func() string {
	return "/2"
    })
})

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

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

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