net/http パッケージ内のハンドラーの登録を解除するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-07 00:04:03
オリジナル
921 人が閲覧しました

How Can I Unregister Handlers in the net/http Package?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!