PhalGo-Echo路由

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

PhalGo-Echo路由

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

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

為什麼選擇Echo

在初期筆者考慮過Echo,gin以及beego來嘗試實現自己的項目,最終還是選擇了使用Echo來作為PhalGo的主要路由架構

讓我決定的因素是應為Echo支援使用fasthttp所以在效率上面基本其他架構沒法比(筆者是個效能狗),我們可以看一下Echo官方的效能圖

機器配置:

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

gin相對來說更人性化一些beego相對更簡單易用一些感興趣的可以嘗試一下

註冊路由

在PhalGo中所有的組件需要使用都需要在入口進行註冊

//初始化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()
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.