تمرير البيانات من البرامج الوسيطة إلى المعالجات
في التصميم الخاص بك، لديك برامج وسيطة تعالج طلبًا واردًا ومعالجات تقوم بإرجاع http.Handler . أنت تريد تمرير البيانات من البرامج الوسيطة إلى المعالجات، وتحديدًا رمز الويب JSON الذي تم تحليله من نص الطلب.
ولتحقيق ذلك، يمكنك الاستفادة من حزمة سياق Gorilla:
import ( "github.com/gorilla/context" ) func Middleware(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // Middleware operations // Parse body/get token. context.Set(r, "token", token) next.ServeHTTP(w, r) }) } func Handler() http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { token := context.Get(r, "token") }) }
في البرنامج الوسيط، يمكنك تحليل نص الطلب وتخزين JWT في سياق الطلب. بعد ذلك، في المعالج، يمكنك استرداد JWT من السياق:
token := context.Get(r, "token")
يسمح لك هذا بتجنب تحليل JWT مرة أخرى في المعالجات الخاصة بك، والتي هي أكثر كفاءة.
التحديث:
حزمة سياق الغوريلا حاليًا في وضع الصيانة.func Middleware(next http. المعالج) http.Handler { إرجاع http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // عمليات الوسيطة // تحليل الجسم/الحصول على الرمز المميز. ctx := context.WithValue(r.Context(), "token, token) next.ServeHTTP(w, r.WithContext(ctx)) }) } func Handler() http.Handler { إرجاع http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { الرمز المميز:= r.Context().Value("الرمز المميز") })تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3