日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

你好,今天我想分享一下,在 Go 語言中串聯 HTTP 處理器。

在使用 Go 之前, 我使用 Nodejs + ExpressJS 去編寫 HTTP 服務器應用。 這個框架提供了很簡單的方法去使用中間件和串聯很多路由節點,因此,不必指定完整的路由路徑來為其添加處理程序。

在 Go 中如何串聯 HTTP 處理程序

 

這個想法是通過分割你的路由和處理每一個部分,串聯到處理器,每個處理程序只負責一部分。它理解起來非常簡單且非常容易使用和維護,所以首先我嘗試在 Go 中做一些類似的事情。

開箱即用, Go 提供了一個很棒的 http 包,它包含了很多不同的工具,當然, 還有 ListenAndServe 方法,它在給定的端口上啟動一個 HTTP 服務器并且通過 Handler 處理它,那么這個 Handler 是什么?

type Handler interface {
 ServeHTTP(ResponseWriter,*Request)
}

Handler 是接口,它有一個方法 - ServeHTTP 去處理傳入的請求和輸出響應。

但是,如果我們想為每一個根路由定義一個處理程序,例如 /api/、/home、/about 等,要怎么做?

ServeMux - HTTP 請求復用器,可以幫助你處理這一點. 使用 ServeMux,我們可以指定處理器方法來服務任何給定的路由,但問題是我們不能做任何嵌套的 ServeMux

文檔中的例子:

在 Go 中如何串聯 HTTP 處理程序

 

我們可以看到,在這個例子中為 /api/ 路由自定義了一個處理器并且定義了一個處理方法給根路由。因此任何以 /api/* 開頭的路由都將使用 apiHandler 處理器方法。 但是如果我們需要串聯一個 usersHandler 到 apiHandler,不通過任何的頭腦風暴和編碼,我們無法做到這點。

為此我寫了一個小庫 - gosplitter,它只提供一個公共方法 Match(url string, mux *http.ServeMux, http.Handler|http.HandlerFunc|interface{}) - 他匹配給定的路由部分和處理器、處理方法或你給定的任何結構!

讓我們來看一個例子:

在 Go 中如何串聯 HTTP 處理程序

 

舉個例子:

/**
 * 定義處理器類型
 */
type APIV1Handler struct {
 mux *http.ServeMux
}
type ColorsHandler struct {
 mux *http.ServeMux
}

這里我們定義了一個我們的處理器,它是一個結構體

在 Go 中如何串聯 HTTP 處理程序

 

添加一個 Start 方法到我們的處理器程序,去激活處理方法

在 Go 中如何串聯 HTTP 處理程序

 

添加 HandlePing 和 HandleBlack 到我們的 APIV1Handler,它響應了 pong 和 #000000

在 Go 中如何串聯 HTTP 處理程序

 

我們在 main 方法中創建了一個新的 ServeMux 然后創建了一個 APIV1Handler 的實例,把它綁定到了 /api/v1 路由,然后啟動了它。

所以在所有這些簡單的操作之后我們擁有了兩個工作中的路由: /api/v1/ping 和 /api/v1/colors/black,會響應 pong 和 #000000。

使用起來不是很容易么?我認為是這樣, 現在在我的項目中使用這個庫來方便的進行路由分割和串聯處理器

感謝閱讀,歡迎提出任何建議和批評!

分享到:
標簽:語言 HTTP
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定