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()安全头