net/http でのハンドラーの登録解除
net/http では、ハンドラーを登録すると、URL パターンが特定の HTTP ハンドラーに関連付けられます。ただし、URL パターンのハンドラーを作成する場合と同様に、実行時にハンドラーの登録を解除する必要がある場合があります。
提供された例は、「/123」のような URL のハンドラーを動的に作成するハンドラー ファクトリの作成を示しています。 /」を選択して登録します。 「/123/」のハンドラーを登録解除するには、対応する「/destroy/123」 URL がありません。
登録解除機能を実装するには、GOROOT からコードをコピーしてカスタム ServerMux を作成できます。 /src/pkg/net/http/server.go。カスタム 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>
このカスタム マルチプレクサを使用するには、HTTP サーバーのハンドラーとして構成できます。別の goroutine から deregister() を呼び出してマルチプレクサを変更することは安全であり、ListenAndServe() によるメッセージのルーティングに影響します。
<code class="go">mux := newMux() mux.Handle("/create", &factory) srv := &http.Server { Addr: localhost:8080 Handler: mux, } srv.ListenAndServe()</code>
登録解除メソッドを使用してカスタム ServerMux を実装することで、ハンドラを管理できるようになります。動的に実行し、実行時に登録を解除します。
以上がGo の `net/http` パッケージのハンドラーの登録を解除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。