Go的Echo框架快速入门
1、简介
Echo框架是一种高性能,可扩展的,轻量级的web框架,开发十分简单,几行代码就启动一个http服务器。
具体使用见官方指南:echo.labstack.com/guide
Echo的特点:
- 优化的HTTP路由,可智能的优先路由
- API组,方便构建强大且可扩展的Restful Api
- 可扩展的中间件框架,在多个级别定义中间件(root, group, route)
- 集中式HTTP错误处理
- 高度个性化、可定制
- HTTP/2支持
2、快速开始
1、新建一个项目文件夹echo-demo
,然后进入该文件目录下
mkdir echo-demo && cd echo-demo
2、然后利用go mod init
初始化该项目。
go mod init echo-demo
3、下载Echo
go get github.com/labstack/echo/v4
下载成功如下:
4、创建server.go
package main
import (
"github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware"
)
func main() {
// 创建一个echo实例
e := echo.New()
// 注册中间件
e.Use(middleware.Logger(), middleware.Recover())
//注册路由
e.GET("/", func(c echo.Context) error {
return c.String(200, "Hello World!")
})
// 启动服务
e.Logger.Fatal(e.Start(":8888"))
}
5、启动服务
go run server.go
6、浏览器访问http://127.0.0.1:8888,就能成功的看到我们的 Hello,World! 输出到屏幕上。
3、Echo生命周期
3.1、创建Echo实例
不同于iris和gin,iris和gin在这之上又封装了一层,包含必须的中间件注册
e := echo.New()
3.2、注册路由
Echo 的路由基于 radix tree ,它让路由的查询非常快,且使用 sync pool 来重复利用内存并且几乎达到了零内存占用。看路由的结构,跟字典树的结构一致,基数树就是字典树的一种优化结构。所以,通过请求来查找 handler 会比 http 提供的路由要快。在 http 的路由查找中是通过遍历方式的O(n),这里使用基数树O(K)的时间复杂度要好的多,同样比普通的Trie树的效率也要高。
// 注册路由
func (e *Echo) GET(path string, h HandlerFunc, m ...MiddlewareFunc) *Route {
// 注册路由
return e.Add(http.MethodGet, path, h, m...)
}
️️⬇️
func (e *Echo) Add(method, path string, handler HandlerFunc, middleware ...MiddlewareFunc) *Route {
// 注册路由 add方法相对于Add多了host参数
return e.add("", method, path, handler, middleware...)
}
3.2、启动http服务
e.Start(":8888")
func (e *Echo) Start(address string) error {
// 设置server地址
e.Server.Addr = address
// 启动server
return e.StartServer(e.Server)
}
流程图如下:
转载自:https://juejin.cn/post/7122361472692256775