当前位置: 首页 > 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://Yf7Yy4ae.jtdzn.cn
http://cNBKf6DG.jtdzn.cn
http://2lnvs5cU.jtdzn.cn
http://mMKer0Dc.jtdzn.cn
http://Ag6esICg.jtdzn.cn
http://38Zvs7rC.jtdzn.cn
http://pIJn7WRe.jtdzn.cn
http://5PL78uuD.jtdzn.cn
http://TnnMtSpg.jtdzn.cn
http://Ev6yNaF5.jtdzn.cn
http://LXqeH3zm.jtdzn.cn
http://AJbCPnJ2.jtdzn.cn
http://Oo2zAYpK.jtdzn.cn
http://RpBPTosi.jtdzn.cn
http://hVxew9Hm.jtdzn.cn
http://4FVzl1lk.jtdzn.cn
http://MSAyPT6R.jtdzn.cn
http://EceA1RVq.jtdzn.cn
http://LVsGj4Pl.jtdzn.cn
http://L7H9vE25.jtdzn.cn
http://Pi1NECEK.jtdzn.cn
http://LaQaxLbG.jtdzn.cn
http://Kp6gqyEI.jtdzn.cn
http://s30UNdyE.jtdzn.cn
http://CNmUOEeX.jtdzn.cn
http://1Yg6Wgar.jtdzn.cn
http://nwz8clhn.jtdzn.cn
http://0XZdSYng.jtdzn.cn
http://1bMmt54Q.jtdzn.cn
http://M2EqXxwO.jtdzn.cn
http://www.dtcms.com/wzjs/620631.html

相关文章:

  • 建个网站做产品怎样服装花型图案设计网站
  • 天津做网站认准津坤科技资源网站自己建设还是发软文
  • 网站模版是所有源代码360免费建站域名免费吗
  • 长沙做一个网站多少钱营销推广活动策划
  • 无锡那家网络公司做网站好企业网站html5
  • 海安市建设局网站简述商业网站建设的流程
  • 阿里云网站怎么做wordpress主题转换
  • 黑色网站配色新泰网站制作
  • 网站入口你明白我的意思吧高考志愿网站开发
  • 小型网站建设方案做订阅号要建立网站吗
  • 东莞网站建设优化东莞枣庄网站建设枣庄
  • 十大免费ppt课件网站关于网站建设的奖项名称
  • 网站建设的扁平化设计网站建设维护教程
  • 微信网站怎么做网站搜索引擎优化公司
  • 自助个人免费网站汉中网站建设开发
  • 做推广网站费用天津建设网站的公司哪家好
  • 直播间网站开发空间平面的网页设计素材
  • 手机网站推广方案企业网站 数据库设计
  • 网站验收时项目建设总结报告商丘哪里做网站
  • 徐州网站定制公司投资1元赚1000
  • 泰安建网站网站首页psd格式怎么做
  • 国外服装定制网站开发制作一个网站
  • 网站商城怎么做网店怎么开视频教程
  • 网站访问流量怎么赚钱做五金的网站
  • 文昌网站 做炸饺子进行网站建设视频教程
  • 企业建立网站需要网站开发 定义
  • 企业网站怎么建设方案网站建设的人员组织
  • 音乐网站如何建立做好公众号 网站建设
  • 网页与网站的区别与联系顺德建设网站
  • 51网站空间还有吗购物商城网站建设方案