"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني إلغاء تسجيل المعالجات في حزمة net/http؟

كيف يمكنني إلغاء تسجيل المعالجات في حزمة net/http؟

تم النشر بتاريخ 2024-12-21
تصفح:720

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

إلغاء تسجيل المعالج في net/http

في net/http، يمكن تسجيل المعالجات ديناميكيًا في أنماط URL محددة باستخدام http.Handle وظيفة. ومع ذلك، معدد الإرسال الافتراضي لا يوفر آلية لإلغاء تسجيل المعالجات.

إحدى الطرق لإلغاء تسجيل المعالج هي إنشاء معدد إرسال مخصص يمتد إلى نوع http.ServeMux القياسي. يمكن أن يتضمن معدد الإرسال المخصص هذا طريقة لإلغاء تسجيل المعالجات. على سبيل المثال، يحدد التعليمة البرمجية التالية معدد إرسال مخصص يضيف طريقة إلغاء التسجيل:

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
}
بمجرد تحديد معدد الإرسال المخصص، يمكن استخدامه للتعامل مع الطلبات. على سبيل المثال:

mux := new(MyMux)
mux.Handle("/create", &factory)

srv := &http.Server{
    Addr:    "localhost:8080",
    Handler: mux,
}
srv.ListenAndServe()
سيؤدي استدعاء أسلوب إلغاء التسجيل على معدد الإرسال المخصص إلى إيقاف المعالج المقابل من خدمة الطلبات. لاحظ أنه يجب تسجيل المعالج باستخدام نفس مثيل معدد الإرسال المخصص حتى يكون إلغاء التسجيل فعالاً.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3