在net/http 中註銷處理程序
在net/http 中,可以使用http.Handle 將處理程序動態註冊到特定的URL 模式功能。但是,預設的多工器不提供取消註冊處理程序的機制。
取消註冊處理程序的一種方法是建立一個擴充標準 http.ServeMux 類型的自訂多工器。此自訂多工器可以包含用於取消註冊處理程序的方法。例如,以下程式碼定義了一個新增 Deregister 方法的自訂多工器:
<code class="go">type MyMux struct { *http.ServeMux mu sync.Mutex // Guards the m map m map[string]http.Handler } func (mux *MyMux) Deregister(pattern string) error { mux.mu.Lock() defer mux.mu.Unlock() if _, ok := mux.m[pattern]; !ok { return errors.New("handler not registered") } delete(mux.m, pattern) return nil }</code>
定義自訂多工器後,它可以用於處理請求。例如:
<code class="go">mux := new(MyMux) mux.Handle("/create", &factory) srv := &http.Server{ Addr: "localhost:8080", Handler: mux, } srv.ListenAndServe()</code>
在自訂多工器上呼叫 Deregister 方法將停止對應的處理程序為請求提供服務。請注意,必須使用相同的自訂多工器實例來註冊處理程序才能使取消註冊生效。
以上是如何取消註冊 net/http 套件中的處理程序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!