这是我参与「第五届青训营 」伴学笔记创作活动的第 12 天
初识 Go 语言Web框架
四、Echo——高性能、可扩展、极简的Go Web框架
概要及特点介绍
Echo 框架具有高度优化的HTTP路由器,零动态内存分配,智能地优先排序路由;可以用于构建健壮且可扩展的RESTful API,轻松组织成组;能够从Let's Encrypt自动安装TLS证书,采用HTTP/2支持提高了速度并提供了更好的用户体验。另外,Echo 还有许多内置中间件可以使用或定义自己的中间件,中间件可以设置在根、组或路由级别。其支持的HTTP请求负载的数据绑定,包括JSON、XML或表单数据;还可用于发送各种HTTP响应的API,包括JSON、XML、HTML、文件、附件、内联、流或Blob。能够使用任何模板引擎进行模板渲染,自定义的中央HTTP错误处理。
Echo 源码:github.com/labstack/ec…
Echo 文档:echo.labstack.com
扩展性
-
框架默认只包含MVC框架的C——url路由和控制器。V视图和M数据操作可由开发者随意使用适合的工具库来操作。
-
另外 Echo 能够方便构建健壮的 RESTful API,通过路由可构建出 RESTful API,比如: e.POST("/user", createUser)、e.GET("/user/1", findUser)、e.PUT("/user/1", updateUser)、e.DELETE("/user/1", deleteUser)。
-
Echo 拥有不同级别的中间件,分别是根级别中间件(router前)、根级别中间件(router后)、组级别中间件、路由级别中间件。这些中间件为 Echo 带来了良好的扩展性。
HTTP/2
Echo 自动支持 HTTP/2
HTTP/2 的特性:
- 使用二进制格式传输数据,而不是文本。使得在解析和优化扩展上更为方便。
- 多路复用,所有的请求都是通过一个 TCP 连接并发完成。
- 对消息头采用 HPACK 进行压缩传输,能够节省消息头占用的网络的流量。
- Server Push:服务端能够更快的把资源推送给客户端。
Echo 的安装
安装 Echo 时注意,需要本地 Go 的版本为 v1.13 或更高版本。因为该框架对于 Go v1.12 的支持有限,一些中间件将无法正常使用。
- 进入项目目录下使用命令初始化:
go mod init myapp - 下载 Echo 源码:
go get github.com/labstack/echo/v4
Echo 构建服务实例Demo:
通过实例化Echo服务,获取HTTP请求,并且用日志记录在localhost:1323的情况。
import (
"net/http"
"github.com/labstack/echo/v4"
)
func main() {
// 创建 echo 实例
e := echo.New()
// GET请求
e.GET("/", func(c echo.Context) error {
return c.String(http.StatusOK, "Hello, World!")
})
e.Logger.Fatal(e.Start(":1323"))
}