DAY-12 入门Go项目7 | 青训营笔记

90 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 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

扩展性

  1. 框架默认只包含MVC框架的C——url路由和控制器。V视图和M数据操作可由开发者随意使用适合的工具库来操作。

  2. 另外 Echo 能够方便构建健壮的 RESTful API,通过路由可构建出 RESTful API,比如: e.POST("/user", createUser)、e.GET("/user/1", findUser)、e.PUT("/user/1", updateUser)、e.DELETE("/user/1", deleteUser)。

  3. 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"))
}