PhalGo-Echo路由

#PhalGo-Echo路由restful

Echo官網地址:https://labstack.com/echo框架

Echo是PhalGo最核心的組件,負責了總體的請求路由返回等功能,而且Echo支持HTTP2協議以及HTTPS協議性能

##爲何選擇Echo調試

在初期筆者考慮過Echo,gin以及beego來嘗試實現本身的項目,最終仍是選擇了使用Echo來做爲PhalGo的主要路由框架rest

讓我決定的因素是應爲Echo支持使用fasthttp因此在效率上面基本其餘框架無法比(筆者是個性能狗),咱們能夠看一下Echo官方的性能圖code

機器配置:中間件

  • Go 1.6
  • wrk 4.0.0
  • 2 GB, 2 Core

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()
相關文章
相關標籤/搜索