issue9/mux 功能完备的 Go 路由器开源项目

我要开发同款
caixw2022年03月17日
128阅读

技术信息

开源地址
https://github.com/issue9/mux
授权协议
MIT

作品详情

通过范型功能,可以很方便地实现一个自定义的路由:

typeCotextstruct{R*http.RequestWhttp.ResposeWriterPParams}typeHadlerFucfuc(ctx*Cotext)typeRouter=RouterOf[HadlerFuc]typePrefix=PrefixOf[HadlerFuc]typeResource=ResourceOf[HadlerFuc]typeMiddlewareFuc=MiddlewareFucOf[HadlerFuc]typeMiddleware=MiddlewareOf[HadlerFuc]typeOptios=OptiosOf[HadlerFuc]fucNew(amestrig,ms[]Middleware,o...Optio)*Router{f:=fuc(whttp.ResposeWriter,r*http.Request,psParams,hHadlerFuc){ctx:=&Cotext{R:r,W:w,P:ps,}h(ctx)}returNewRouterOf[HadlerFuc](ame,f,ms,o...)}//以上就是自定义路由的全部功能,之后就可以直接使用:r:=New("router",il)r.Get("/path",fuc(ctx*Cotext){//TODOctx.W.WriteHeader(200)})r.Prefix("/admi").Get("/logi",fuc(ctx*Cotext){//TODOctx.W.WriteHeader(501)})

所有实现的路由,都支持以下功能:

路由参数;支持正则表达式作为路由项匹配方式;拦截正则表达式的行为;自动生成OPTIONS请求处理方式;自动生成HEAD请求处理方式;根据路由反向生成地址;任意风格的路由,比如discuz这种不以/作为分隔符的;分组路由,比如按域名,或是版本号等;CORS跨域资源的处理;支持中间件;自动生成OPTIONS*请求;静态文件系统;TRACE请求方法的支持;paic处理;

 

功能介绍

通过范型功能,可以很方便地实现一个自定义的路由: type Context struct {
  R *http.Request
  W http.ResponseWriter
  P Params
...

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论