goframe常见的路由器中间件

 关于goframe我列举出一些路由器中间件

  1. LoggingMiddleware(日志记录中间件):在处理请求前打印请求的 URL 路径,然后执行后续中间件和路由处理函数。
  2. AuthMiddleware(权限验证中间件):检查请求头中的“Authorization”,若为空则返回 401 状态码,否则执行后续流程。
  3. ErrorHandlerMiddleware(错误处理中间件):通过 defer 和 recover 捕获处理过程中的错误,若有错误则打印错误信息并返回 500 状态码。

用代码表示:

package main

import (
    "fmt"
    "github.com/gogf/gf/v2/net/ghttp"
)

// LoggingMiddleware 日志记录中间件
func LoggingMiddleware(r *ghttp.Request) {
    fmt.Printf("Request URL: %s\n", r.URL.Path)
    r.Middleware.Next()
}

// AuthMiddleware 权限验证中间件
func AuthMiddleware(r *ghttp.Request) {
    // 模拟权限验证逻辑,这里假设通过请求头中的"Authorization"进行验证
    authHeader := r.Header.Get("Authorization")
    if authHeader == "" {
        r.Response.WriteStatus(401)
        return
    }
    r.Middleware.Next()
}

// ErrorHandlerMiddleware 错误处理中间件
func ErrorHandlerMiddleware(r *ghttp.Request) {
    defer func() {
        if err := recover(); err!= nil {
            fmt.Println("Error occurred:", err)
            r.Response.WriteStatus(500)
        }
    }()
    r.Middleware.Next()
}

这段 Go 代码主要定义了三个路由中间件:

1. `LoggingMiddleware` :会打印出请求的 URL 路径,然后执行后续中间件和路由处理函数。

2. `AuthMiddleware` :通过获取请求头中的“Authorization”来模拟权限验证,如果该值为空,返回 401 状态码,否则继续执行后续流程。

3. `ErrorHandlerMiddleware` :使用 `defer` 和 `recover` 来捕获可能出现的运行时错误。如果捕获到错误,打印错误信息并返回 500 状态码,然后继续执行后续流程。

package main

import (
    "github.com/gogf/gf/v2/frame/g"
    "github.com/gogf/gf/v2/net/ghttp"
)

func main() {
    s := g.Server()
    s.Group("/", func(group *ghttp.RouterGroup) {
        group.Middleware(LoggingMiddleware)
        group.Middleware(AuthMiddleware)
        group.Middleware(ErrorHandlerMiddleware)
        // 注册其他路由和处理函数
        group.GET("/example", func(r *ghttp.Request) {
            r.Response.Write("Hello, this is an example route.")
        })
    })
    s.Run()
}

这段 Go 代码是一个使用 GoFrame 框架创建 HTTP 服务器的主函数。

首先创建了一个服务器实例 `s` 。 然后使用 `s.Group("/", func(group *ghttp.RouterGroup) {...})` 定义了一个以 `/` 为根路径的路由分组。

在这个分组中,依次注册了三个中间件:`LoggingMiddleware`(日志记录中间件)、`AuthMiddleware`(权限验证中间件)和 `ErrorHandlerMiddleware`(错误处理中间件)。 接着在这个分组中注册了一个 `GET` 类型的路由 `/example` ,对应的处理函数是 `func(r *ghttp.Request) {...}` ,该函数向响应中写入字符串 `"Hello, this is an example route."` 。 最后通过 `s.Run()` 启动服务器,使其开始监听并处理 HTTP 请求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值