美文网首页GO
Go Iris 中间件

Go Iris 中间件

作者: e0c52543163a | 来源:发表于2019-06-04 13:49 被阅读0次

Iris 中间件
https://www.cnblogs.com/liyutian/p/10270935.html
当我们在 iris 中讨论中间件时,我们讨论的是在HTTP请求生命周期中在主处理程序代码之前和/或之后的运行代码。
实现中间件功能,有下面这样两种方式:

方式一:
我们可以通过按顺序注册多个 handler 的方式来实现中间件的效果:

package main

import "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 方法注册的中间件都被执行了。

相关文章

  • Go Iris 中间件

    Iris 中间件https://www.cnblogs.com/liyutian/p/10270935.html当...

  • 从hello-world开始go iris

    从hello-world开始go iris iris框架是少数支持MVC的go web框架。在简单业务逻辑测试中,...

  • go iris初探

    首先安装go环境。 安装iris 创建一个go的工作路径 编辑main.go 启动server 这样就完成了第一次...

  • golang iris mvc框架的服务端加载过程

    整个iris框架共三层结构: 应用的配置和注册信息,如路由、中间件、日志。 中间的服务端实例,从iris实例拿配置...

  • go web开发之iris(四)中间件Middleware

    中间件主要用来处理页面的登录校验、跨站请求伪造防御、日志记录、session设置,权限管理等。例如:可以对所有请求...

  • Iris框架认识

    关于Iris Iris是一个通过GO编写的快速的,简单的,但是功能齐全和非常有效率的web框架Iris为你下一个网...

  • golang iris validator

    iris 并没有内置数据校验,所以使用go-playground的validator

  • go iris学习日记(二) go iris连接mysql并返回

    承接上一篇go iris框架的文章, 最近想用它来写一个服务端。话不多说, 直接上代码。首先创建main.go文件...

  • go web开发之iris(二)初识iris

    iris不做介绍,相关的信息可以在github上找到。iris的特点就是简单、全面、易于上手。先来看一个简单的例子...

  • Gin 中间件学习

    《Gin(七):中间件的使用和定义》《Go Web轻量级框架Gin学习系列:中间件使用详解》

网友评论

    本文标题:Go Iris 中间件

    本文链接:https://www.haomeiwen.com/subject/yuvlxctx.html