电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

61396-Go语言程序设计项目化教程(微课版)7.3 中间件VIP免费

61396-Go语言程序设计项目化教程(微课版)7.3 中间件_第1页
61396-Go语言程序设计项目化教程(微课版)7.3 中间件_第2页
61396-Go语言程序设计项目化教程(微课版)7.3 中间件_第3页
中间件Gin中间件会话控制中间件开发流程01.03.02.目录文件上传04.01Gin中间件•中间件定义•Gin默认中间件•中间件的分类1Gin中间件中间件是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能),衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的。中间件的定义Gin框架允许开发者在处理请求的过程中,加入用户自己的函数,这个函数就叫中间件。中间件适合处理一些公共的业务逻辑,比如登录认证、权限校验、数据分页、记录日志、耗时统计等。例如我们可以设置当用户访问一个网页的时候,不管访问什么路径都需要先进行登录,这就需要为所有路径的处理函数设置统一的一个中间件,Gin的中间件必须是一个gin.HandlerFunc类型。Gin中的中间件1Gin中间件Gin框架本身提供了一些基础的中间件,使用router:=gin.Default()定义route时,是构建一个自带默认中间件的*Engine,该中间件默认带了Logger()和Recovery()。Gin默认中间件//DefaultreturnsanEngineinstancewiththeLoggerandRecoverymiddlewarealreadyattached.funcDefault()*Engine{debugPrintWARNINGDefault()engine:=New()engine.Use(Logger(),Recovery())returnengine}//Useattachesaglobalmiddlewaretotherouter.i.e.themiddlewareattachedthroughUse()willbeincludedinthehandlerschainforeverysinglerequest.Even404,405,staticfiles...//Forexample,thisistherightplaceforaloggerorerrormanagementmiddleware.func(engine*Engine)Use(middleware...HandlerFunc)IRoutes{engine.RouterGroup.Use(middleware...)engine.rebuild404Handlers()engine.rebuild405Handlers()returnengine}//LoggerinstancesaLoggermiddlewarethatwillwritethelogstogin.DefaultWriter.//Bydefault,gin.DefaultWriter=os.Stdout.funcLogger()HandlerFunc{returnLoggerWithConfig(LoggerConfig{})}//Recoveryreturnsamiddlewarethatrecoversfromanypanicsandwritesa500iftherewasone.funcRecovery()HandlerFunc{returnRecoveryWithWriter(DefaultErrorWriter)}1Gin中间件•Gin的中间件是通过Use方法设置的,它接收一个可变参数,所以我们同时可以设置多个中间件。•Default函数会默认绑定两个已经准备好的中间件,它们就是Logger和Recovery,帮助我们打印日志输出和painc处理。1Gin中间件HTTPBasicAuthorization是HTTP常用的认证方案,它通过Authorization请求消息头含有服务器用于验证用户代理身份的凭证。格式为:Authorization:Basic如果认证不成功,服务器返回401Unauthorized状态码以及WWW-Authenticate消息头,让客户端输入用户名和密码进一步认证。在Gin中,为我们提供了gin.BasicAuth()帮我们生成基本认证的中间件。//BasicAuthreturnsaBasicHTTPAuthorizationmiddleware.Ittakesasargumentamap[string]stringwherethekeyistheusernameandthevalueisthepassword.funcBasicAuth(accountsAccounts)HandlerFunc{returnBasicAuthForRealm(accounts,"")}中间件的典型应用:HTTPBasicAuthorizationpackagemainimport("github.com/gin-gonic/gin")funcmain(){r:=gin.Default()r.Use(gin.BasicAuth(gin.Accounts{"admin":"123456",}))r.GET("/",func(c*gin.Context){c.JSON(200,"登陆成功!")})r.Run(":8080")}1Gin中间件1Gin中间件虽然可以使用BasicAuth()中间件做一些简单的用户权限的认证但当使用了自定义的session时,Gin自带的中间件则不能满足需求此时可以编写自定义的中间件,并且将自定义的中间件加入到全局中间件队列中去每一个route的请求同样会到自定义的中间件中去,实现自定义的认证等因此,Gin的中间件大致可以分为两类:全局中间件和路由中间件中间件的分类全局中间件作用于所有的路由上,所有的路由请求都需要经过这些全局中间件。全局中间件局部中间件作用于单个路由,并不是所有路由路由中间件02中间件开发流程•Next()•Abort()•Set()•Get()2中间件开发流程Next()将请求传递给请求链中下一个处理方法当执行Next()的时候,程序会挂起当前执行的操作,并继续向...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部