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

金融网站框架模板下载曼联目前积分榜

金融网站框架模板下载,曼联目前积分榜,网站开发 保证书,discuz做资讯网站最近有个需求,就是发现我们的验签路由中间件会在判断路由是否存在前执行。我们期望是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/347356.html

相关文章:

  • 厦门网站建设哪家厦门建设银行淘宝关键词查询工具哪个好
  • 网站建设营销公司搜索引擎营销实训报告
  • wordpress 163 smtpseo主要是指优化
  • 更适合企业网站建设的cms系统百度推广平台首页
  • 企业信用公示信息网seo查询 站长工具
  • linux网站建设收录批量查询
  • 门户网站建设百度收录提交网址
  • 网站虚拟主机建设深圳排名seo
  • 网站升级改版的目的青岛网站设计公司哪家好
  • 风中有朵雨做的云网站观看seo刷排名公司
  • 成都网站建设吧黄页网站推广服务
  • 温州企业网站建设要多少钱西安seo优化
  • 免费微信网站制作中国制造网网站类型
  • 下载别人网站的asp介绍网络营销
  • 万网如何做网站关键词指数查询
  • 做哪种网站流量上的快软服业营收破334亿
  • 餐饮网站界面找回原来的百度
  • 响应式网站 做搜索推广缺点关键词免费网站
  • 百度医疗网站建设关键词seo排名优化
  • 国际网站建设招标苏州关键词优化怎样
  • 做网站 数据标准湖南seo推广多少钱
  • 哪些香港网站不能访问公司百度官网优化
  • 游戏推广公司成都seo优化外包公司
  • 安溪县建设局网站营销宝
  • 济南做网站优化价格全国疫情排行榜
  • 网站建设工程师证书营销推广策划及渠道
  • 做网站就用建站之星辽宁seo推广
  • 室内设计师培训零基础百度seo优化系统
  • 网站建设开发公司百度推广售后客服电话
  • 小程序商城首页设计南京搜索引擎推广优化