處理net/http 中的註銷
net/http 中的HTTP 處理程序可以動態註冊和註銷,以提供處理請求的靈活性。若要取消註冊處理程序,可以建立自訂 ServerMux。
實作自訂ServerMux
從Go 原始碼(GOROOT/src/pkg) 複製ServerMux 的程式碼/net/http/server.go,第837-939行)。將Deregister 方法新增至自訂ServerMux,以從模式到處理程序對應中刪除處理程序:
<code class="go">func (mux *MyMux) Deregister(pattern string) error { mux.mu.Lock() defer mux.mu.Unlock() del(mux.m, pattern) return nil }</code>
用法
建立自訂ServerMux 的實例並像平常一樣處理「/create」路由:
<code class="go">mux := newMux() mux.Handle("/create", &factory)</code>
將自訂ServerMux 設定為HTTP 伺服器的處理程序:
<code class="go">srv := &http.Server { Addr: localhost:8080 Handler: mux, }</code>
取消註冊
取消註冊<code class="go">mux.Deregister("/123/*")</code>
取消註冊
取消註冊
取消註冊取消註冊取消註冊取消註冊取消註冊 要取消註冊處理程序,只需呼叫ServerMux 上的Deregister 方法即可:這將修改伺服器的路由行為,後續對「/123/*」的請求將不再被處理。由先前註冊的處理程序處理。 安全修改透過從另一個 goroutine 呼叫 deregister() 來修改 ServerMux 是安全的,並且會更新伺服器的路由邏輯。以上是如何在 Go 的 net/http 中登出 HTTP 處理程序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!