#PhalGo-Echo路由restful
Echo官网地址:https://labstack.com/echo框架
Echo是PhalGo最核心的组件,负责了总体的请求路由返回等功能,而且Echo支持HTTP2协议以及HTTPS协议性能
##为何选择Echo调试
在初期笔者考虑过Echo,gin以及beego来尝试实现本身的项目,最终仍是选择了使用Echo来做为PhalGo的主要路由框架rest
让我决定的因素是应为Echo支持使用fasthttp因此在效率上面基本其余框架无法比(笔者是个性能狗),咱们能够看一下Echo官方的性能图code
机器配置:中间件
gin相对来讲更人性化一些beego相对更简单易用一些感兴趣的能够尝试一下ip
##注册路由路由
在PhalGo中全部的组件须要使用都须要在入口进行注册rem
//初始化ECHO路由 phalgo.NewEcho()
而后就能够注册咱们的路由了,建议在项目创建一个routes目录中存放路由go文件而后在入口文件中引入
// Routes 载入路由 routes.GetRoutes()
Echo支持restful标准
phalgo.Echo.Get() //接受Get请求 phalgo.Echo.Post() //接受Post请求 phalgo.Echo.Delete() //接受Delete请求 phalgo.Echo.Put() //接受Put请求 phalgo.Echo.Any() //接受全部请求方式
以上全部方式都须要接受两个参数,第一个是请求的路径好比填入**"/test/:id",就须要使用localhost/test/5这种方式请求,第二个参数必须是一个方法func(Context) error**例子以下
func hello(c echo.Context) error { return c.String(http.StatusOK, "Hello, World!") } //接收Get请求 e.GET("/test/:id",hello)
##开启服务
开启服务有两种方式一种是默认的Standard方式一种是Fasthttp,看过上面的对比图也应该之道Fasthttp有多强了把,咱们能够在入口文件最后加入以下语句开启服务
//使用Fasthttp方式 phalgo.RunFasthttp(":1333") //使用Standard方式 phalgo.RunStandard(":1333")
这样就能够运行一个http服务了
##中间件middleware
Echo有不少好用的中间件,笔者在这里进行了封装,这里简单说起几个以及他们的功能,使用方式只须要在开启服务以前初始化便可
1.Recover
使用Recover会打印出打印请求异常信息
phalgo.Recover()
好比访问一个未注册路由的地址,页面上会打印Not Found,终端上会打印以下语句:
{"time":"2016-05-24T17:02:12+08:00","level":"ERROR","prefix":"echo","file":"echo.go","line":"226","message":"Not Found"}
2.Logger
使用Logger会打印出全部的请求明细,请求IP请求方式,请求花费时间请求地址,请求httpcode等等,方便调试
请求成功:
{"time":"2016-05-24T17:02:12+08:00","remote_ip":"101.81.5.247","method":"GET","uri":"/","status":200, "latency":194,"latency_human":"194.251µs","rx_bytes":0,"tx_bytes":76}
请求失败:
{"time":"2016-05-24T17:02:10+08:00","remote_ip":"101.81.5.247","method":"GET","uri":"/s","status":404, "latency":79,"latency_human":"79.126µs","rx_bytes":0,"tx_bytes":9}
3.Gzip压缩
在不少时候咱们须要开启Gzip压缩来减小返回数据的大小来节约流量能够经过如下方式设置:
phalgo.Gzip()
4.末尾斜杠处理
在匹配路由的时候有一个问题好比咱们定义了一个路由是**/test咱们经过localhost/test/**是请求不到应为末尾多了一个斜杠,这个时候就能够经过中间件的末尾斜杠处理来添加末尾斜杠或者是删除末尾斜杠
//自动添加末尾斜杠 phalgo.AddTrailingSlash() //自动删除末尾斜杠 phalgo.RemoveTrailingSlash()