GoFrame
提供了优雅的中间件请求控制方式,该方式也是主流的 WebServer
提供的请求流程控制方式,基于中间件设计可以为 WebServer
提供更灵活强大的插件机制。经典的中间件洋葱模型:
中间件定义
中间件的定义和普通HTTP执行方法 HandlerFunc
一样,但是可以在 Request
参数中使用 Middleware
属性对象来控制请求流程。
我们拿一个跨域请求的中间件定义来示例说明一下:
func MiddlewareCORS(r *ghttp.Request) {
r.Response.CORSDefault()
r.Middleware.Next()
}
可以看到在该中间件中执行完成跨域请求处理的逻辑后,使用 r.Middleware.Next()
方法进一步执行下一个流程;如果这个时候直接退出不调用 r.Middleware.Next()
方法的话,将会退出后续的执行流程(例如可以用于请求的鉴权处理)。