Echo 框架参考
Echo v4 Go 框架:路由、路由组、中间件、数据绑定、验证、错误处理和优雅关闭。
1. 初始化与路由
e := echo.New()
e.Use(middleware.Logger())
e.Use(middleware.Recover())
api := e.Group("/api")
api.Use(middleware.JWT([]byte("secret")))
{
api.GET("/articles", listArticles)
api.POST("/articles", createArticle)
api.GET("/articles/:id", getArticle)
}
e.Logger.Fatal(e.Start(":8080"))
2. 绑定与验证
type CreateArticleRequest struct {
Title string `json:"title" validate:"required,min=5,max=300"`
Content string `json:"content" validate:"required,min=50"`
}
e.Validator = &CustomValidator{validator: validator.New()}
func createArticle(c echo.Context) error {
req := new(CreateArticleRequest)
if err := c.Bind(req); err != nil {
return err
}
if err := c.Validate(req); err != nil {
return err
}
return c.JSON(http.StatusCreated, req)
}
3. 错误处理
e.HTTPErrorHandler = func(err error, c echo.Context) {
var he *echo.HTTPError
if errors.As(err, &he) {
c.JSON(he.Code, echo.Map{"error": he.Message})
return
}
c.JSON(500, echo.Map{"error": "服务器内部错误"})
}
4. 内置中间件参考
| 中间件 | 用途 |
|---|---|
| Logger() | 请求日志 |
| Recover() | Panic 恢复 |
| CORS() | 跨域头 |
| JWT(key) | JWT 认证 |
| RateLimiter | 限流 |
| Gzip() | Gzip 压缩 |
| Secure() | 安全头 |