当前位置: 首页 > wzjs >正文

有什么做第二职业的网站吗推广普通话手抄报

有什么做第二职业的网站吗,推广普通话手抄报,工作站,给公司做网站要花多钱最近有个需求,就是发现我们的验签路由中间件会在判断路由是否存在前执行。我们期望是gin框架先自己判断路由中间件是否存在,存在了再走后面的中间件,不存在直接返回404.这样能节省一定的资源。 研究了一下gin框架的源码, 先说一下…

最近有个需求,就是发现我们的验签路由中间件会在判断路由是否存在前执行。我们期望是gin框架先自己判断路由中间件是否存在,存在了再走后面的中间件,不存在直接返回404.这样能节省一定的资源。
研究了一下gin框架的源码,
先说一下表面的研究。
在这里插入图片描述

当我用r.Use的方式直接注册路由的时候,会是先走验证中间件后走找路由。
当我先group再用group 去注册路由的时候,就会是先找路由再走验证中间件。
然后研究gin的use源码。
这个是gin.Default的use源码

func (engine *Engine) Use(middleware ...HandlerFunc) IRoutes {engine.RouterGroup.Use(middleware...)engine.rebuild404Handlers()engine.rebuild405Handlers()return engine
}

这个是group的use源码

// Use adds middleware to the group, see example code in GitHub.
func (group *RouterGroup) Use(middleware ...HandlerFunc) IRoutes {group.Handlers = append(group.Handlers, middleware...)return group.returnObj()
}

可以看到gin.Default的use里面其实是直接调用了group的use,然后走了rebuild404Handler和rebuild405Handlers 方法。然后从函数名上就可以看出应该是rebuild404Handler 重置了判断路由是否存在的流程运行位置。
下面是

func (engine *Engine) rebuild404Handlers() {engine.allNoRoute = engine.combineHandlers(engine.noRoute)
}

然后combineHandlers

func (group *RouterGroup) combineHandlers(handlers HandlersChain) HandlersChain {finalSize := len(group.Handlers) + len(handlers)if finalSize >= int(abortIndex) {panic("too many handlers")}mergedHandlers := make(HandlersChain, finalSize)copy(mergedHandlers, group.Handlers)copy(mergedHandlers[len(group.Handlers):], handlers)return mergedHandlers
}

从combineHandlers 里面的代码可以看出不来,这里其实做了一个操作就是将将原来的allNoRoute 给替换掉了。新的allNoRoute 是将当前的handle组和engine.noRoute 合并起来的一个新allNoRoute 。
所以只要你是直接使用r.Use()那么你注册的路由中间件都是在路由查询之前跑的。改也很简单,要么设置路由组,要么使用r.RouterGroup.Use()来注册路由。

http://www.dtcms.com/wzjs/392465.html

相关文章:

  • 常州软件开发公司抖音搜索seo软件
  • wordpress 前端框架win优化大师官网
  • 手机模板网站模板免费下载营销策划公司
  • 江西南昌网站制作专业网络推广公司
  • 装饰设计公司排名深圳网站营销seo电话
  • 网站建设的市场需求应用商店aso
  • 网站建设知识产权问题crm系统
  • app网站怎么制作广州网站优化工具
  • 广告网页设计宁波seo推广优化怎么做
  • 武汉公司注册网站网站监测
  • 嘉兴市建设局网站百度域名注册官网
  • 外贸网站建设书籍网络营销有哪几种方式
  • 友情手机站什么网站都能进的浏览器
  • 网站推广优化教程腾讯企点注册
  • 广州黄埔网站制作百度广告投放收费标准
  • 企业网站维护服务北京seo外包 靠谱
  • 南京移动网站建设近三年成功的营销案例
  • 怎样优化网站 优帮云seo发帖论坛
  • 招标项目怎么查询乐陵seo外包公司
  • 织梦cms做网站怎么样何鹏seo
  • 做网站怎么防止被黑武汉企业seo推广
  • 收录网站查询长沙官网seo技术厂家
  • 免费制作个人网站的软件网页设计一般用什么软件
  • 深圳专业做网站哪家好谈谈你对网络营销的看法
  • 网易博客 wordpress网页seo搜索引擎优化
  • 合肥网站建设怎么做下载百度
  • 重庆做网站开发的公司有哪些软文案例500字
  • 外贸网站建设可以吗磁力狗在线
  • 网站效果演示seo指的是
  • 新闻网站开发素材淘宝运营培训班