go-zero 内置中间件的用法
时间: 2024-09-26 18:06:31 浏览: 24
Go-Zero框架内置了许多方便使用的中间件(Middleware),它们可以在处理HTTP请求和响应之前或之后执行一些自定义操作。中间件的基本用法是在创建`Server`实例时链式调用`Use`方法,然后在`Group`或直接在顶级路径上注册处理函数。
以下是使用内置中间件的简单示例:
```go
import (
"github.com/go-zoo/zoo"
"github.com/go-zoo/zoo/middleware"
)
func main() {
// 创建一个Server实例
server := zoo.NewServer()
// 添加日志记录中间件,记录所有请求和响应
server.Use(middleware.Logger())
// 访问控制中间件,检查用户是否已登录
authMiddleware := middleware.Auth(func(ctx *zoo.Context, next zoo.HandlerFunc) error {
// 这里可以检查token或者其他认证信息
// 如果验证通过,返回nil继续处理;否则返回错误
})
server.Use(authMiddleware)
// 错误处理中间件,捕获并统一处理各种异常情况
server.Use(middleware.Recover())
// 使用`Group`定义特定的API路径和对应的处理器
api := server.Group("/api")
api.Use(middleware.Cors()) // 允许跨域访问
// API处理器
api.GET("/hello", helloHandler)
// 启动服务器
if err := server.Run(); err != nil {
panic(err)
}
// 示例处理器函数
func helloHandler(c *zoo.Context) error {
c.JSON(200, gin.H{"message": "Hello from Go-Zero!"})
return nil
}
}
```
在这个例子中,每添加一个中间件,它都会对后续的处理器执行操作,直到遇到下一个中间件或最终的处理器函数。