Go Iris 中间件
Iris 中间件
当我们在 iris 中讨论中间件时,我们讨论的是在HTTP请求生命周期中在主处理程序代码之前和/或之后的运行代码。
实现中间件功能,有下面这样两种方式:
方式一:
我们可以通过按顺序注册多个 handler 的方式来实现中间件的效果:
package mainimport "github.com/kataras/iris"func main() {app := iris.New()app.Get("/", before, mainHandler, after)login := app.Party("/login", loginHandler)login.Get("/{name}", loginNameHandler)app.Run(iris.Addr(":9090"))
}func loginNameHandler(ctx iris.Context){name := ctx.Params().Get("name")println(name)ctx.Next()
}func loginHandler(ctx iris.Context){println("login")ctx.Next()
}func before(ctx iris.Context){println("before")ctx.Next() //继续执行下一个handler,这本例中是mainHandler
}func mainHandler(ctx iris.Context){println("mainHandler")ctx.Next()
}func after(ctx iris.Context){println("after")ctx.Next()
}
访问 localhost:9090/输出结果:
before
mainHandler
after
访问 localhost:9090/login/zhangsan 输出结果:
login
zhangsan
方式二(全局中间件):
我们会注意到,访问 login 路径时的中间件代码并没有被执行。如果希望在全局范围内使用中间件,而不仅仅是针对某一个路径时,可以通过使用 Use
和 Done
方法来为当前域名下的所有路由进行注册
func main() {app := iris.New()//注意 Use 和 Done 方法需要写在绑定访问路径的方法之前//使用 ‘Use’ 方法作为当前域名下所有路由的第一个处理函数//而使用 ‘UseGlobal’ 方法注册的中间件,会在包括所有子域名在内的所有路由中执行app.Use(UseBefore)app.Done(DoneAfter)app.Get("/", before, mainHandler, after)login := app.Party("/login", loginHandler)login.Get("/{name}", loginNameHandler)app.Run(iris.Addr(":9090"))
}func UseBefore(ctx iris.Context){println("use - before")ctx.Next()
}func DoneAfter(ctx iris.Context) {println("Done - after")ctx.Next()
}
访问 localhost:9090/ 输出结果:
use - before
before
mainHandler
after
Done - after
访问 localhost:9090/login/zhangsan 输出结果:
use - before
login
zhangsan
Done - after
可以看到通过 Use 和 Done 方法注册的中间件都被执行了。
转载于:https://www.cnblogs.com/liyutian/p/10270935.html
Go Iris 中间件相关推荐
- golang web 框架 gin beego iris 对比
1.1 框架排名 Gin 31k [Lite] Beego 22k Iris 16k Echo 15k [Lite] Revel 11k Martini 10k [×] buffalo 5k [Lit ...
- spring框架 web开发_go语言web开发框架:Iris框架讲解(一)
Golang介绍 Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性.谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软 ...
- spring框架 web开发_go语言web开发框架学习:Iris框架讲解(一)
Golang介绍 Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性.谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软 ...
- go 框架iris 响应记录器
iris go 语言 iris 是一个强大的框架,写一个http 服务是比较方便的,记录他收到的所有参数,方法等等也是有必要的, 使用logger来记录,以便于调试和发现错误,因为在测试没有充分的情况 ...
- 基于Go语言Iris+Vue+ElementUI的OA办公系统
项目介绍 一款 Go 语言基于Iris.Vue.ElementUI.MySQL等框架精心打造的一款模块化.插件化.高性能的前后端分离架构敏捷开发框架,可快速搭建前后端分离后台管理系统,本着简化开发.提 ...
- go iris 源码思路分析
app init 进入 app := iris.New() app.Run(iris.Addr("0.0.0.0:8080")) iris.go 核心是初始化了Router 和Co ...
- 【GO+Iris】Iris框架初识
前言 关于Iris 安装Iris Host HTTP/2和安全 任意iris.Runner host配置 多个主机 优雅的关闭 带有TLS地自动公共域名 app.Run的第二个参数 使用配置 自定义值 ...
- Iris微服务框架_golang web框架_完整示例Demo
Iris简介 Iris是一款Go语言中用来开发web应用的框架,该框架支持编写一次并在任何地方以最小的机器功率运行,如Android.ios.Linux和Windows等.该框架只需要一个可执行的服务 ...
- IRIS 框架学习一
IRIS 框架 1.介绍 用go语言开发web架构,速度最快的web框架. Iris是一款Go语言中用来开发web应用的框架,该框架支持编写一并在任何地方以最小的机器功率运行,如Android.ios ...
最新文章
- 如何调用系统的包安装自己的apk呢?
- oracle创建用户、表空间、临时表空间、分配权限步骤详解
- module ‘tensorflow‘ has no attribute ‘Tensor‘
- Android—EventBus使用与源码分析
- mysql报错:Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre
- 【火炉炼AI】机器学习032-用户之间相似度的计算
- iOS中事件的传递和响应者链条
- 谈一下MSDN和下载原版windows7
- 新sniffer pro 4.75 sp5下载
- iOS iPhone X底部设置高度 白色底部显示
- 期刊论文插入参考文献(Word尾注插入法,简单适用)
- 腾讯开放平台 集成qq登录
- Web前端从开始到入门(2)
- Android源码编译:任意界面屏幕边缘上滑弹出快捷操作栏【一键加速、开关控制】
- win7家庭版计算机添加用户,win7家庭版怎样设置来宾用户权限
- Inkscape如何将png图片转换为svg图片并且不失真
- 三、Android系统内核编译及刷机实战 (修改反调试标志位)
- github下载提速教程
- 模拟后台接收短信验证码
- zbar下条形码和二维码的识别与解码Ⅲ|2021SC@SDUSC