12 Star 145 Fork 20

aurora-engine/aurora

Create your Gitee Account
Explore and code with more than 13.5 million developers,Free private repositories !:)
Sign up
文件
Clone or Download
group.go 2.26 KB
Copy Edit Raw Blame History
package aurora
import (
"gitee.com/aurora-engine/web"
"net/http"
"strings"
)
/*
Group 路由分组
初始化的 分组变量不会携带全局的Use
group 可以设定局部的全局Use
*/
type Group struct {
a *Engine
interceptor []web.Interceptor
prefix string
}
// Get 请求
func (g *Group) Get(url string, control any, interceptor ...web.Interceptor) {
interceptor = mergeMiddleware(g.interceptor, interceptor)
g.a.register(http.MethodGet, g.prefix+url, control, interceptor...)
}
// Post 请求
func (g *Group) Post(url string, control any, interceptor ...web.Interceptor) {
interceptor = mergeMiddleware(g.interceptor, interceptor)
g.a.register(http.MethodPost, g.prefix+url, control, interceptor...)
}
// Put 请求
func (g *Group) Put(url string, control any, interceptor ...web.Interceptor) {
interceptor = mergeMiddleware(g.interceptor, interceptor)
g.a.register(http.MethodPut, g.prefix+url, control, interceptor...)
}
// Delete 请求
func (g *Group) Delete(url string, control any, interceptor ...web.Interceptor) {
interceptor = mergeMiddleware(g.interceptor, interceptor)
g.a.register(http.MethodDelete, g.prefix+url, control, interceptor...)
}
// Head 请求
func (g *Group) Head(url string, control any, middleware ...web.Interceptor) {
middleware = mergeMiddleware(g.interceptor, middleware)
g.a.register(http.MethodHead, g.prefix+url, control, middleware...)
}
// Group 路由分组 必须以 “/” 开头分组
func (g *Group) Group(url string, middleware ...web.Interceptor) *Group {
if strings.HasSuffix(url, "/") {
url = url[:len(url)-1]
}
//多次分组 叠加之前的分组处理器
h := mergeMiddleware(g.interceptor, middleware)
return &Group{
prefix: g.prefix + url,
a: g.a,
interceptor: h,
}
}
// Interceptors 基于 group 的分组添加 Middleware
func (g *Group) Interceptors(interceptor ...web.Interceptor) {
g.interceptor = append(g.interceptor, interceptor...)
}
// mergeMiddleware 合并两个 Middleware
// g 分组全局 Middleware
// h 局部 Middleware
func mergeMiddleware(g, h []web.Interceptor) []web.Interceptor {
if g == nil && h == nil {
return nil
}
middleware := make([]web.Interceptor, 0)
middleware = append(middleware, g...)
middleware = append(middleware, h...)
return middleware
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/aurora-engine/aurora.git
git@gitee.com:aurora-engine/aurora.git
aurora-engine
aurora
aurora
v1.3.24

Search