README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈
Echo
高性能、可扩展、极简的 Go Web 框架。
Echo 基于 Go 标准 net/http 构建——并通过 echo.WrapHandler / echo.WrapMiddleware 与其互操作——补充了标准库留给你的部分:一个快速的基数树路由器、请求绑定(支持可插拔的验证器)、一个深度中间件生态系统,以及集中式错误处理。该框架得到积极维护,当前发布线为 v5(有关最新版本和最近提交的徽章,请参见上方)。
帮助与问题:Github 讨论区
功能概览
- 优化的 HTTP 路由器,智能地优先处理路由
- 构建健壮且可扩展的 RESTful API
- API 分组
- 可扩展的中间件框架
- 在根、组或路由级别定义中间件
- 支持 JSON、XML 和表单负载的数据绑定
- 便捷函数用于发送多种 HTTP 响应
- 集中式 HTTP 错误处理
- 支持任意模板引擎的模板渲染
- 自定义日志记录器格式
- 高度可定制
- 通过 Let’s Encrypt 实现自动 TLS
- 支持 HTTP/2
赞助商
点击 此处 获取有关赞助的更多信息。
指南
支持的 Echo 版本
- 截至 2026-01-18,Echo 的最新主要版本为
v5。- 请参阅 API_CHANGES_V5.md 了解
v4和v5之间的公共 API 变更及升级说明。
- 请参阅 API_CHANGES_V5.md 了解
- Echo
v4将提供 security* 更新和 bug 修复,直至 2026-12-31
请参阅 ROADMAP.md 了解 Echo 的发展方向及版本支持策略。
安装
// go get github.com/labstack/echo/{version}
go get github.com/labstack/echo/v5
Echo 的最新版本支持最近四个 Go 主要 releases,并且可能兼容 更早的版本。
示例
package main
import (
"github.com/labstack/echo/v5"
"github.com/labstack/echo/v5/middleware"
"log/slog"
"net/http"
)
func main() {
// Echo instance
e := echo.New()
// Middleware
e.Use(middleware.RequestLogger()) // use the RequestLogger middleware with slog logger
e.Use(middleware.Recover()) // recover panics as errors for proper error handling
// Routes
e.GET("/", hello)
// Start server
if err := e.Start(":8080"); err != nil {
slog.Error("failed to start server", "error", err)
}
}
// Handler
func hello(c *echo.Context) error {
return c.String(http.StatusOK, "Hello, World!")
}
官方中间件仓库
以下中间件列表由 Echo 团队维护。
第三方中间件仓库
添加第三方中间件时请谨慎。Echo 团队没有时间和人力来保证此列表中中间件的安全性和质量
| Repository | Description |
|---|---|
| oapi-codegen/oapi-codegen | Automatically generate RESTful API documentation with OpenAPI Client and Server Code Generator |
| github.com/swaggo/echo-swagger | Automatically generate RESTful API documentation with Swagger 2.0. |
| github.com/ziflex/lecho | Zerolog logging library wrapper for Echo logger interface. |
| github.com/brpaz/echozap | Uber 的 Zap 日志库对 Echo 日志接口的封装。 |
| github.com/samber/slog-echo | Go slog 日志库对 Echo 日志接口的封装。 |
| github.com/darkweak/souin/plugins/echo | 基于 Souin 的 HTTP 缓存系统,可自动缓存您的端点。根据您的需求,它支持某些分布式和非分布式存储系统。 |
| github.com/mikestefanello/pagoda | 使用 Echo 构建的快速、易用的全栈 Web 开发启动套件。 |
| github.com/go-woo/protoc-gen-echo | 使用 ProtoBuf 生成 Echo 服务端代码 |
请提交一个 PR,在此处添加你自己的库。
贡献
所有事项均使用 issues
- 对于小改动,直接提交 PR 即可。
- 对于较大的改动,在提交 PR 之前先开启一个 issue 进行讨论。
- PR 应包含:
- 测试用例
- 文档
- 示例(如果适用)
- 你还可以通过以下方式做出贡献:
- 报告 issues
- 建议新功能或增强
- 改进/修复文档
致谢
- Vishal Rana (作者)
- Nitin Rana (顾问)
- Roland Lammel (维护者)
- Martti T. (维护者)
- Pablo Andres Fuente (维护者)
- Contributors