تتناول هذه المقالة طريقة بديلة للحصول على استجابة HTTP لأغراض التسجيل دون اللجوء إلى الطلبات المزيفة أو تعديل http.ResponseWriter. نحن نقدم مفهوم تسلسل البرمجيات الوسيطة، مما يوفر تنفيذًا للأسلوب الوظيفي.
يتضمن تسلسل البرامج الوسيطة تمرير التحكم إلى سلسلة من المعالجات التي تؤدي مهام محددة قبل وبعد تنفيذ الطلب الرئيسي. تتلقى هذه المعالجات، المعروفة باسم البرامج الوسيطة، الطلب والمعالج التالي في السلسلة، مما يضمن التنفيذ المرتب.
نحدد وظيفة وسيطة مخصصة تعمل بمثابة مجمع معالج HTTP:
func NewResponseLoggingHandler(next http.HandlerFunc) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
// Replace the response writer with a recorder for subsequent handlers
c := httptest.NewRecorder()
next(c, r)
// Copy data from the recorder to the original response writer
for k, v := range c.HeaderMap {
w.Header()[k] = v
}
w.WriteHeader(c.Code)
c.Body.WriteTo(w)
}
}
لضمان تسجيل الاستجابة التلقائية لجميع المعالجات في فئة معينة، نقوم بإنشاء مجمع معالج آخر يتضمن البرنامج الوسيط للتسجيل:
func NewDefaultHandler(next http.HandlerFunc) http.HandlerFunc {
return NewResponseLoggingHandler(NewOtherStuffHandler(next))
}
الآن، أي سلسلة معالجات تم إنشاؤها باستخدام NewDefaultHandler ستتضمن تلقائيًا تسجيل الاستجابة والسلوكيات الافتراضية الأخرى.
h := NewDefaultHandler(...)
باستخدام تسلسل البرامج الوسيطة، يمكننا اعتراض استجابات HTTP وتسجيلها بشفافية دون الحاجة إلى طلب تزوير أو تعديل http.ResponseWriter. يسمح هذا الأسلوب بالتسجيل المعياري ويبسط إدارة المعالج.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3