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

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

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

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

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

在 Go 中如何串聯(lián) HTTP 處理程序

 

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

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

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

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

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

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

文檔中的例子:

在 Go 中如何串聯(lián) HTTP 處理程序

 

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

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

讓我們來看一個例子:

在 Go 中如何串聯(lián) HTTP 處理程序

 

舉個例子:

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

這里我們定義了一個我們的處理器,它是一個結(jié)構(gòu)體

在 Go 中如何串聯(lián) HTTP 處理程序

 

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

在 Go 中如何串聯(lián) HTTP 處理程序

 

添加 HandlePing 和 HandleBlack 到我們的 APIV1Handler,它響應(yīng)了 pong 和 #000000

在 Go 中如何串聯(lián) HTTP 處理程序

 

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

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

使用起來不是很容易么?我認(rèn)為是這樣, 現(xiàn)在在我的項目中使用這個庫來方便的進(jìn)行路由分割和串聯(lián)處理器

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

分享到:
標(biāo)簽:語言 HTTP
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

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

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達(dá)人2018-06-03

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

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定