likes
comments
collection
share

Go的Echo框架快速入门

作者站长头像
站长
· 阅读数 73

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

下载成功如下:

Go的Echo框架快速入门

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

Go的Echo框架快速入门

6、浏览器访问http://127.0.0.1:8888,就能成功的看到我们的 Hello,World! 输出到屏幕上。

Go的Echo框架快速入门

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

Go的Echo框架快速入门

3.2、启动http服务

e.Start(":8888")

func (e *Echo) Start(address string) error {
	// 设置server地址
	e.Server.Addr = address
	// 启动server
	return e.StartServer(e.Server)
}

流程图如下:

Go的Echo框架快速入门

转载自:https://juejin.cn/post/7122361472692256775
评论
请登录