Go Echo

Echo web框架是go语言开发的一种高性能,可扩展,轻量级的web框架。


Echo 框架默认其实只包含了MVC框架的C部分,就是负责url路由和控制器部分。至于V视图部分和M数据操作部分我们可以随意使用自己喜欢的工具库来操作。
 

一个简单的例子:

package main

import (
	"fmt"
	"github.com/labstack/echo"
	"github.com/labstack/echo/middleware"
	"net/http"
)

var totalRequest = 0

func main() {
	e := echo.New()
	//注册中间件
	// e.Pre(middleware.HTTPSRedirect())    //转Https请求中间件
	// e.Pre(middleware.WWWRedirect())      //www跳转
	// e.Pre(middleware.HTTPSWWWRedirect()) //https www跳转
	// e.Use(middleware.Recover())          //拦截panic错误并且在控制台打印错误日志,避免echo程序直接崩溃
	e.Use(middleware.Logger()) //请求日志中间件
	// e.Pre(middleware.Rewrite(map[string]string{
	// 	"/old":              "/new", //将/old重定向至/new
	// 	"/api/*":            "/$1",
	// 	"/js/*":             "/public/javascripts/$1",
	// 	"/users/*/orders/*": "/user/$1/order/$2",
	// }))
	e.Use(Count)
	e.GET("/kkoal654", func(c echo.Context) error {
		return c.String(http.StatusOK, "welcome to kkoral")
	})
	e.Start(":8080")
}

//自定义一个访问计数中间件
func Count(next echo.HandlerFunc) echo.HandlerFunc {

	return func(c echo.Context) error {
		totalRequest++
		fmt.Println(totalRequest)
		c.Response().Header().Add("requests", fmt.Sprintf("%d", totalRequest))
		return next(c)
	}
}

 Count 自定义计数中间件的执行流如下,源代码建议能进行阅读和了解,是典型的函数式编程实现案例

Go Echo_第1张图片

你可能感兴趣的:(go,框架)