issue9/mux功能完备的 Go 路由器
通过范型功能,可以很方便地实现一个自定义的路由:
type Context struct {
R *http.Request
W http.ResponseWriter
P Params
}
type HandlerFunc func(ctx *Context)
type Router = RouterOf[HandlerFunc]
type Prefix = PrefixOf[HandlerFunc]
type Resource = ResourceOf[HandlerFunc]
type MiddlewareFunc = MiddlewareFuncOf[HandlerFunc]
type Middleware = MiddlewareOf[HandlerFunc]
type Options = OptionsOf[HandlerFunc]
func New(name string, ms []Middleware, o ...Option)* Router {
f := func(w http.ResponseWriter, r *http.Request, ps Params, h HandlerFunc) {
ctx := &Context {
R: r,
W: w,
P: ps,
}
h(ctx)
}
return NewRouterOf[HandlerFunc](name, f, ms, o...)
}
// 以上就是自定义路由的全部功能,之后就可以直接使用:
r := New("router", nil)
r.Get("/path", func(ctx *Context){
// TODO
ctx.W.WriteHeader(200)
})
r.Prefix("/admin").Get("/login", func(ctx *Context){
// TODO
ctx.W.WriteHeader(501)
})
所有实现的路由,都支持以下功能:
- 路由参数;
- 支持正则表达式作为路由项匹配方式;
- 拦截正则表达式的行为;
- 自动生成 OPTIONS 请求处理方式;
- 自动生成 HEAD 请求处理方式;
- 根据路由反向生成地址;
- 任意风格的路由,比如 discuz 这种不以 / 作为分隔符的;
- 分组路由,比如按域名,或是版本号等;
- CORS 跨域资源的处理;
- 支持中间件;
- 自动生成 OPTIONS * 请求;
- 静态文件系统;
- TRACE 请求方法的支持;
- panic 处理;
评论
mux功能完备的 Go 路由器
mux是对http.ServeMux的扩展,添加正则路由等功能。-路由参数;-支持正则表达式作为路由项匹配方式;-拦截正则表达式的行为;-自动生成OPTIONS请求处理方式;-自动生成HEAD请求处理
mux功能完备的 Go 路由器
0
gorilla/mux请求路由和分发的 Go 框架
gorilla/mux 实现了一个请求路由和分发的Go框架。mux名字的意思是"HTTPrequestmultiplexer".和标准包 http.ServeMux类似, mux.Router根据已
gorilla/mux请求路由和分发的 Go 框架
0
gorilla/mux请求路由和分发的 Go 框架
gorilla/mux 实现了一个请求路由和分发的 Go 框架。mux 名字的意思是 "HTTP r
gorilla/mux请求路由和分发的 Go 框架
0
BunRouter用于 Go 的快速灵活的 HTTP 路由器
BunRouter是一个用于Go的极快的HTTP路由器,具有独特的功能组合:中间件允许将HTTP处理程序中的常见操作提取到可重用的函数中。错误处理允许通过处理中间件中的错误来进一步减小HTTP处理程序
BunRouter用于 Go 的快速灵活的 HTTP 路由器
0
BunRouter用于 Go 的快速灵活的 HTTP 路由器
BunRouter 是一个用于 Go 的极快的 HTTP 路由器,具有独特的功能组合:中间件允许将
BunRouter用于 Go 的快速灵活的 HTTP 路由器
0