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 路径时的中间件代码并没有被执行。如果希望在全局范围内使用中间件,而不仅仅是针对某一个路径时,可以通过使用 UseDone 方法来为当前域名下的所有路由进行注册

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 中间件相关推荐

  1. golang web 框架 gin beego iris 对比

    1.1 框架排名 Gin 31k [Lite] Beego 22k Iris 16k Echo 15k [Lite] Revel 11k Martini 10k [×] buffalo 5k [Lit ...

  2. spring框架 web开发_go语言web开发框架:Iris框架讲解(一)

    Golang介绍 Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性.谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软 ...

  3. spring框架 web开发_go语言web开发框架学习:Iris框架讲解(一)

    Golang介绍 Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性.谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软 ...

  4. go 框架iris 响应记录器

    iris go 语言 iris 是一个强大的框架,写一个http 服务是比较方便的,记录他收到的所有参数,方法等等也是有必要的, 使用logger来记录,以便于调试和发现错误,因为在测试没有充分的情况 ...

  5. 基于Go语言Iris+Vue+ElementUI的OA办公系统

    项目介绍 一款 Go 语言基于Iris.Vue.ElementUI.MySQL等框架精心打造的一款模块化.插件化.高性能的前后端分离架构敏捷开发框架,可快速搭建前后端分离后台管理系统,本着简化开发.提 ...

  6. go iris 源码思路分析

    app init 进入 app := iris.New() app.Run(iris.Addr("0.0.0.0:8080")) iris.go 核心是初始化了Router 和Co ...

  7. 【GO+Iris】Iris框架初识

    前言 关于Iris 安装Iris Host HTTP/2和安全 任意iris.Runner host配置 多个主机 优雅的关闭 带有TLS地自动公共域名 app.Run的第二个参数 使用配置 自定义值 ...

  8. Iris微服务框架_golang web框架_完整示例Demo

    Iris简介 Iris是一款Go语言中用来开发web应用的框架,该框架支持编写一次并在任何地方以最小的机器功率运行,如Android.ios.Linux和Windows等.该框架只需要一个可执行的服务 ...

  9. IRIS 框架学习一

    IRIS 框架 1.介绍 用go语言开发web架构,速度最快的web框架. Iris是一款Go语言中用来开发web应用的框架,该框架支持编写一并在任何地方以最小的机器功率运行,如Android.ios ...

最新文章

  1. 如何调用系统的包安装自己的apk呢?
  2. oracle创建用户、表空间、临时表空间、分配权限步骤详解
  3. module ‘tensorflow‘ has no attribute ‘Tensor‘
  4. Android—EventBus使用与源码分析
  5. mysql报错:Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre
  6. 【火炉炼AI】机器学习032-用户之间相似度的计算
  7. iOS中事件的传递和响应者链条
  8. 谈一下MSDN和下载原版windows7
  9. 新sniffer pro 4.75 sp5下载
  10. iOS iPhone X底部设置高度 白色底部显示
  11. 期刊论文插入参考文献(Word尾注插入法,简单适用)
  12. 腾讯开放平台 集成qq登录
  13. Web前端从开始到入门(2)
  14. Android源码编译:任意界面屏幕边缘上滑弹出快捷操作栏【一键加速、开关控制】
  15. win7家庭版计算机添加用户,win7家庭版怎样设置来宾用户权限
  16. Inkscape如何将png图片转换为svg图片并且不失真
  17. 三、Android系统内核编译及刷机实战 (修改反调试标志位)
  18. github下载提速教程
  19. 模拟后台接收短信验证码
  20. zbar下条形码和二维码的识别与解码Ⅲ|2021SC@SDUSC

热门文章

  1. 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(五)客户端介绍
  2. 详谈调用winpcap驱动写arp多功能工具
  3. 《数据中心设计与运营实战》——2.6 监控基础设施
  4. Windows2003如何安装IIS
  5. 误删Windows文件后恢复技巧
  6. excel常用公式整理
  7. 绝了!Dataway让 SpringBoot 变得更强大!
  8. Spring Boot MongoDB 入门
  9. 史上最坑爹的代码!个个让人崩溃!
  10. 深入浅出Python元编程