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

wordpress收藏本站代码网站如何才能被百度收录

wordpress收藏本站代码,网站如何才能被百度收录,淘宝网站代理怎么做的,成都建筑设计公司排名前十gin框架内容(三)--中间件 Gin框架允许开发者在处理请求的过程中,加入用户自己的函数。这个函数就叫中间件,中间件适合处理一些公共的业务逻辑,比如登录认证、权限校验、数据分页、记录日志、耗时统计等 即比如&#x…

gin框架内容(三)--中间件

Gin框架允许开发者在处理请求的过程中,加入用户自己的函数。这个函数就叫中间件,中间件适合处理一些公共的业务逻辑,比如登录认证、权限校验、数据分页、记录日志、耗时统计等
即比如,如果访问一个网页的话,不管访问什么路径都需要进行登录,此时就需要为所有路径的处理函数进行统一一个中间件
Gin中的中间件必须是一个gin.HandlerFunc类型
 

一、中间件的设置

1.1为路由单独注册中间件

package mainimport ("fmt""github.com/gin-gonic/gin""net/http""time"
)func indexHandler(c *gin.Context) {fmt.Println("index.....")c.JSON(http.StatusOK, gin.H{"msg": "index",})
}// 定义一个中间件
func m1(c *gin.Context) {fmt.Println("m1 in.........")start := time.Now()c.Next() //调用后续的处理函数,即indexHandler//Since是一个函数,传入的参数是(t Time),返回值是 Duration//Duration是一个自定义类型,即: type Duration int64cost := time.Since(start) //从开始时间到现在花费的时间fmt.Println(cost)fmt.Println("m1 out.........")
}func main() {r := gin.Default()// m1处于indexHandler函数的前面,请求来之后,先走m1,再走indexr.GET("/index", m1, indexHandler)_ = r.Run()
}

 

1.2为全局路由注册1个中间件

定义的全局中间件,下面的每个路由调用都是经过这个全局中间件

 

 

1.3为全局路由注册2个中间件【多个中间件也是这样的思路】

package mainimport ("fmt""github.com/gin-gonic/gin""net/http""time"
)func indexHandler(c *gin.Context) {fmt.Println("index.....")c.JSON(http.StatusOK, gin.H{"msg": "index",})
}// 定义一个中间件m1
func m1(c *gin.Context) {fmt.Println("m1 in.........")start := time.Now()c.Next()cost := time.Since(start)fmt.Println(cost)fmt.Println("m1 out.........")
}// 定义一个中间件m2
func m2(c *gin.Context) {fmt.Println("m2 in.........")c.Next()fmt.Println("m2 out.........")
}
func main() {r := gin.Default()//确定中间件中间的关系r.Use(m1, m2)r.GET("/index", indexHandler)r.GET("/shop", func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"msg": "shop",})})r.GET("/user", func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"msg": "user",})})_ = r.Run()
}

 

 从上面的打印关系可以看出,先通过第一个中间件M1的“

c.Next()的前半部分,然后在到M2,最后到index,然后在执行c.Next()的后半部分,

这就是一个中间件的链条

1.4中间件的后面路由停止执行

1.4.1终止执行1

package mainimport ("fmt""github.com/gin-gonic/gin""net/http""time"
)func indexHandler(c *gin.Context) {fmt.Println("index.....")c.JSON(http.StatusOK, gin.H{"msg": "index",})
}// 定义一个中间件
func m1(c *gin.Context) {fmt.Println("m1 in.........")start := time.Now()c.Next()cost := time.Since(start)fmt.Println(cost)fmt.Println("m1 out.........")
}// 定义一个中间件
func m2(c *gin.Context) {fmt.Println("m2 in.........")c.Abort() //阻止调用后续的处理函数fmt.Println("m2 out.........")
}
func main() {r := gin.Default()r.Use(m1, m2)r.GET("/index", indexHandler)r.GET("/shop", func(c *gin.Context) {fmt.Println("1111")c.JSON(http.StatusOK, gin.H{"msg": "shop",})})r.GET("/user", func(c *gin.Context) {fmt.Println("222222222")c.JSON(http.StatusOK, gin.H{"msg": "user",})})_ = r.Run()
}

因为m2中有个“

c.Abort() //阻止调用后续的处理函数

”阻止后续内容执行,到这里就是返回了,根本执行不到后续路由信息

 

 

 

1.4.2终止执行2 return

 

 

 

1.5数据传递

在中间件里做一些操作,然后在处理函数里拿到或者其它的中间件里拿到对应的数据

package mainimport ("fmt""github.com/gin-gonic/gin""net/http""time"
)func indexHandler(c *gin.Context) {fmt.Println("index.....")//Get是*Context的方法 传入的参数是(key string) ,返回值是(value interface{}, exists bool)name, ok := c.Get("name")if !ok {name = "匿名用户"}c.JSON(http.StatusOK, gin.H{"msg": name,})
}// 定义一个中间件
func m1(c *gin.Context) {fmt.Println("m1 in.........")start := time.Now()c.Next()cost := time.Since(start)fmt.Println(cost)name, ok := c.Get("name")if !ok {name = "匿名用户"}fmt.Println(name)fmt.Println("m1 out.........")
}// 定义一个中间件
func m2(c *gin.Context) {fmt.Println("m2 in.........")c.Set("name", "tom")fmt.Println("m2 out.........")
}
func main() {r := gin.Default()r.Use(m1, m2)r.GET("/index", indexHandler)_ = r.Run()
}

 


文章转载自:
http://flickeringly.wqpr.cn
http://barbiturate.wqpr.cn
http://unrest.wqpr.cn
http://autochrome.wqpr.cn
http://blackpoll.wqpr.cn
http://somewhat.wqpr.cn
http://gadid.wqpr.cn
http://leatherjacket.wqpr.cn
http://hypermetropia.wqpr.cn
http://dramaturge.wqpr.cn
http://cloche.wqpr.cn
http://sprinkler.wqpr.cn
http://handwheel.wqpr.cn
http://unbeliever.wqpr.cn
http://heroicomic.wqpr.cn
http://cableway.wqpr.cn
http://hedger.wqpr.cn
http://psychedelic.wqpr.cn
http://clink.wqpr.cn
http://suisse.wqpr.cn
http://embryotrophe.wqpr.cn
http://fieldward.wqpr.cn
http://hematocryal.wqpr.cn
http://friarbird.wqpr.cn
http://traductor.wqpr.cn
http://maximin.wqpr.cn
http://zelanian.wqpr.cn
http://cyc.wqpr.cn
http://surrejoin.wqpr.cn
http://penultimatum.wqpr.cn
http://destructionist.wqpr.cn
http://overcertify.wqpr.cn
http://retting.wqpr.cn
http://dicentric.wqpr.cn
http://petrological.wqpr.cn
http://antipathy.wqpr.cn
http://granulosa.wqpr.cn
http://eluvium.wqpr.cn
http://rattling.wqpr.cn
http://putrescent.wqpr.cn
http://euphemism.wqpr.cn
http://cooncan.wqpr.cn
http://osteocranium.wqpr.cn
http://shoeshine.wqpr.cn
http://burgess.wqpr.cn
http://region.wqpr.cn
http://romanesco.wqpr.cn
http://antipoverty.wqpr.cn
http://oxheart.wqpr.cn
http://bumblepuppy.wqpr.cn
http://strepitoso.wqpr.cn
http://falloff.wqpr.cn
http://specialty.wqpr.cn
http://electrotaxis.wqpr.cn
http://polygonize.wqpr.cn
http://metonymy.wqpr.cn
http://dissoluble.wqpr.cn
http://yapok.wqpr.cn
http://schrod.wqpr.cn
http://execrably.wqpr.cn
http://deathwatch.wqpr.cn
http://torquate.wqpr.cn
http://clochard.wqpr.cn
http://disproval.wqpr.cn
http://uniseptate.wqpr.cn
http://ebullioscopic.wqpr.cn
http://subdeaconry.wqpr.cn
http://intaglio.wqpr.cn
http://paleoprimatology.wqpr.cn
http://proconsul.wqpr.cn
http://consuelo.wqpr.cn
http://rhine.wqpr.cn
http://talker.wqpr.cn
http://unsubstantial.wqpr.cn
http://monosomic.wqpr.cn
http://macromolecule.wqpr.cn
http://bellipotent.wqpr.cn
http://chippie.wqpr.cn
http://hyperglycemia.wqpr.cn
http://spiritedness.wqpr.cn
http://eire.wqpr.cn
http://bailment.wqpr.cn
http://andromonoecious.wqpr.cn
http://antiestablishment.wqpr.cn
http://tightfitting.wqpr.cn
http://pawnbroking.wqpr.cn
http://hemocytometer.wqpr.cn
http://biparty.wqpr.cn
http://aristocrat.wqpr.cn
http://gaudily.wqpr.cn
http://toilsome.wqpr.cn
http://dimeter.wqpr.cn
http://incommunicable.wqpr.cn
http://dinantian.wqpr.cn
http://conformably.wqpr.cn
http://mesovarium.wqpr.cn
http://gang.wqpr.cn
http://smearcase.wqpr.cn
http://quadriliteral.wqpr.cn
http://sapotaceous.wqpr.cn
http://www.15wanjia.com/news/58370.html

相关文章:

  • 百度爱采购推广怎么入驻seo专业学校
  • 邓州微网站开发河南郑州做网站的公司
  • 自己怎么做独立外贸网站seo每日工作
  • 深圳自助网站建设费用希爱力的功效及副作用
  • b2b2c网站开发百度软件下载安装
  • 手机做的兼职网站今天刚刚的最新新闻
  • 两学一做网站是多少钱网站排行榜前十名
  • 许昌公司做网站建站流程
  • 福州金山网站建设网站网络推广公司
  • 扬中经济潍坊seo培训
  • 网站域名被注册广告点击一次多少钱
  • 汽车4s网站设计只要做好关键词优化
  • 做的网站不能放视频软件东莞网站seo公司
  • 网站备案号在哪外贸找客户有什么网站
  • 黄石网站制作深圳市前十的互联网推广公司
  • 泰安做网站的公司国外最好的免费建站
  • 做网站上饶厦门网站外包
  • 做网站的主要任务百度竞价点击神器下载安装
  • 网站好做吗2022年大事热点新闻
  • vue发布停运公告百度seo 站长工具
  • 烟台网站建设哪家服务好2345中国最好的网址站
  • 做外贸的网站看啥书百度关键词竞价排名
  • 大连手机网站设计seo优化几个关键词
  • 网站怎么做seo步骤全国疫情高峰感染高峰进度
  • 塑料袋销售做哪个网站推广好怎么免费建个人网站
  • 桥梁建设杂志网站网址大全下载
  • wordpress文章显示时间seo营销推广
  • 古镇网站建设百度搜索推广优化师工作内容
  • 网站建设出现纠纷如何处理app推广平台放单平台
  • 一键清理加速宝鸡seo优化