Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk membatalkan pendaftaran Pengendali HTTP dalam net/http Go?

Bagaimana untuk membatalkan pendaftaran Pengendali HTTP dalam net/http Go?

Mary-Kate Olsen
Lepaskan: 2024-11-05 17:01:02
asal
924 orang telah melayarinya

How to Deregister HTTP Handlers in Go's net/http?

Kendalikan Penyahdaftaran dalam net/http

Pengendali HTTP dalam net/http boleh didaftarkan secara dinamik dan tidak didaftarkan untuk memberikan fleksibiliti dalam mengendalikan permintaan. Untuk menyahdaftar pengendali, ServerMux tersuai boleh dibuat.

Melaksanakan ServerMux Tersuai

Salin kod untuk ServerMux daripada kod sumber Go (GOROOT/src/pkg /net/http/server.go, talian 837-939). Tambahkan kaedah Deregister pada ServerMux tersuai untuk mengalih keluar pengendali daripada pemetaan corak-ke-Pengendali:

<code class="go">func (mux *MyMux) Deregister(pattern string) error {
    mux.mu.Lock()
    defer mux.mu.Unlock()
    del(mux.m, pattern)
    return nil
}</code>
Salin selepas log masuk

Penggunaan

Buat contoh ServerMux tersuai dan kendalikan laluan "/create" seperti biasa:

<code class="go">mux := newMux()
mux.Handle("/create", &factory)</code>
Salin selepas log masuk

Tetapkan ServerMux tersuai sebagai Pengendali untuk pelayan HTTP:

<code class="go">srv := &http.Server {
    Addr: localhost:8080
    Handler: mux,
}</code>
Salin selepas log masuk

Nyahdaftar

Untuk menyahdaftar pengendali, cuma panggil kaedah Deregister pada ServerMux:

<code class="go">mux.Deregister("/123/*")</code>
Salin selepas log masuk

Ini akan mengubah suai gelagat penghalaan pelayan dan permintaan seterusnya kepada "/123/*" tidak lagi dikendalikan oleh pengendali yang berdaftar sebelum ini.

Pengubahsuaian Selamat

Mengubah suai ServerMux dengan memanggil deregister() daripada goroutine lain adalah selamat dan akan mengemas kini logik penghalaan untuk pelayan.

Atas ialah kandungan terperinci Bagaimana untuk membatalkan pendaftaran Pengendali HTTP dalam net/http Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan