net/http でのハンドラーの登録解除
net/http では、http.Handle を使用してハンドラーを特定の URL パターンに動的に登録できます。関数。ただし、デフォルトのマルチプレクサーには、ハンドラーを登録解除するメカニズムがありません。
ハンドラーを登録解除する 1 つの方法は、標準の 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 中国語 Web サイトの他の関連記事を参照してください。