كيفية إنشاء برنامج وسيط مخصص في Quartz Flask؟

ديفيد سميث
ديفيد سميث
يشغل ديفيد منصب مدير مبيعات شركة Donghai County Alpha Quartz Products Co. ، Ltd. ، ولديه فهم عميق للطلب في السوق على منتجات الكوارتز وهو ممتاز في بناء علاقات تجارية قوية مع العملاء في الداخل والخارج.

في مجال تطوير الويب، اكتسب Flask، وهو إطار ويب Python خفيف الوزن ولكنه قوي، شعبية كبيرة بسبب بساطته ومرونته. تُعد قارورة الكوارتز، المعروفة بأدائها العالي وموثوقيتها، لاعبًا رئيسيًا في هذا المجال. باعتباري أحد موردي قارورة الكوارتز، فإنني أدرك أهمية البرامج الوسيطة المخصصة في تعزيز وظائف تطبيق قارورة الكوارتز. في منشور المدونة هذا، سأرشدك خلال عملية إنشاء برنامج وسيط مخصص في Quartz Flask.

فهم الوسيطة

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

في Quartz Flask، يمكن استخدام البرامج الوسيطة لتعزيز الأمان وتحسين الأداء وإضافة وظائف مخصصة إلى تطبيقك. على سبيل المثال، قد ترغب في تسجيل كل طلب وارد لأغراض تصحيح الأخطاء أو مصادقة المستخدمين قبل وصولهم إلى مسارات معينة.

المتطلبات الأساسية

لمتابعة هذا الدليل، ستحتاج إلى فهم أساسي لـ Python وFlask. يجب أيضًا أن يكون لديك Quartz Flask مثبتًا في بيئة التطوير الخاصة بك. إذا لم تقم بتثبيته بعد، يمكنك استخدامهنقطةلتثبيته:

نقطة تثبيت الكوارتز - قارورة

إنشاء وسيطة مخصصة بسيطة

لنبدأ بإنشاء برنامج وسيط مخصص بسيط يسجل كل طلب وارد. ستقوم هذه البرامج الوسيطة بطباعة طريقة الطلب وعنوان URL والرؤوس إلى وحدة التحكم.

from quartz_flask import Flask app = Flask(__name__) class RequestLoggingMiddleware: def __init__(self, app): self.app = app def __call__(self,Environ, start_response): # تسجيل طريقة الطلب وعنوان URL وطريقة الرؤوس =Environ.get('REQUEST_METHOD') url =Environ.get('PATH_INFO') headers = '\n'.join([f'{k}: {v}' for k, v inenviron.items() if k.startswith('HTTP_')]) print(f"Request: {method} {url}\nHeaders:\n{headers}") # اتصل بالتطبيق التالي في المكدس return self.app(environ, start_response) # لف تطبيق Flask بالبرنامج الوسيط app.wsgi_app = RequestLoggingMiddleware(app.wsgi_app) @app.route('/') def Index(): return "Hello, World!" إذا كان __name__ == '__main__': app.run(debug=True)

في هذا الكود، نقوم أولاً بتعريف فئةطلب تسجيل البرامج الوسيطة. ال__حار__تقوم الطريقة بتهيئة البرنامج الوسيط باستخدام تطبيق Flask. ال__يتصل__الأسلوب هو جوهر الوسيطة. فهو يعترض الطلب الوارد، ويسجل المعلومات ذات الصلة، ثم يستدعي التطبيق التالي في المكدس (في هذه الحالة، تطبيق Flask نفسه).

وأخيرًا، نختتم تطبيق Flaskwsgi_appمع برمجياتنا الوسيطة المخصصة. وهذا يضمن أن كل طلب سوف يمر عبر برمجياتنا الوسيطة قبل الوصول إلى وظيفة العرض.

إضافة وسيطة المصادقة

حالة الاستخدام الشائعة الأخرى للبرامج الوسيطة هي المصادقة. لنقم بإنشاء برنامج وسيط يتحقق من وجود مفتاح API صالح في رؤوس الطلب.

من قارورة استيراد quartz_flask، إحباط التطبيق = Flask(__name__) class APIKeyAuthenticationMiddleware: def __init__(self, app, valid_api_key): self.app = app self.valid_api_key = valid_api_key def __call__(self, Environmental, start_response): api_key =Environ.get('HTTP_API_KEY') if api_key != self.valid_api_key: abort(401) # إرجاع غير مصرح به self.app(environ, start_response) # قم بتعيين مفتاح API صالح valid_api_key = 'your - Secret - api - key' # لف تطبيق Flask بالبرنامج الوسيط app.wsgi_app = APIKeyAuthenticationMiddleware(app.wsgi_app, valid_api_key) @app.route('/protected') def protected(): return "هذا طريق محمي!" إذا كان __name__ == '__main__': app.run(debug=True)

في هذا المثال،APIKeyAuthenticationMiddlewareيتحقق الفصل من وجودAPI_KEYفي رؤوس الطلبات إذا كان مفتاح واجهة برمجة التطبيقات المقدم لا يتطابق مع مفتاح واجهة برمجة التطبيقات الصالح، فإنه يعرض خطأ 401 غير مصرح به. وبخلاف ذلك، فإنه يسمح للطلب بالمتابعة إلى وظيفة العرض.

استخدام الوسيطة لتحسين الأداء

يمكن أيضًا استخدام البرامج الوسيطة لتحسين أداء تطبيق Quartz Flask الخاص بك. على سبيل المثال، يمكنك إنشاء برنامج وسيط يقوم بتخزين استجابات مسارات معينة مؤقتًا.

من quartz_flask استيراد تطبيق وقت استيراد القارورة = Flask(__name__) class ResponseCachingMiddleware: def __init__(self, app, Cache_time=60): self.app = app self.cache_time =ذاكرة التخزين المؤقت self.cache = {} def __call__(self,Environ,start_response): url =Environ.get('PATH_INFO') إذا كان عنوان url في self.cache: Cached_response, Cached_time = self.cache[url] if time.time() - Cached_time < self.cache_time: # إرجاع حالة الاستجابة المخزنة مؤقتًا، الرؤوس، الجسم = cached_response start_response(status, headers) return [body.encode()] # إذا لم يتم تخزينها مؤقتًا أو انتهت صلاحية ذاكرة التخزين المؤقت، فاتصل باستجابة التطبيق التالية = self.app(environ, start_response)status = start_response.status headers = start_response.headers body = ''.join([chunk.decode() forunk in Response]) # قم بتخزين الاستجابة مؤقتًا self.cache[url] = ((الحالة، الرؤوس، النص)، time.time()) return Response # لف تطبيق Flask بالبرنامج الوسيط app.wsgi_app = ResponseCachingMiddleware(app.wsgi_app, Cache_time=30) @app.route('/cached') def cached(): return "تم تخزين هذا الرد مؤقتًا!" إذا كان __name__ == '__main__': app.run(debug=True)

في هذا الكود،ResponseCachingMiddlewareيقوم الفصل بتخزين استجابات الطلبات لفترة زمنية محددة. إذا تم تقديم طلب لنفس عنوان URL خلال وقت ذاكرة التخزين المؤقت، فسيتم إرجاع الاستجابة المخزنة مؤقتًا بدلاً من معالجة الطلب مرة أخرى.

الأواني الزجاجية المختبرية ذات الصلة لتطبيقات قارورة الكوارتز

في سياق البحث والتطوير حيث يتم استخدام قارورة الكوارتز في كثير من الأحيان، يمكن أن تكون بعض الأواني الزجاجية المختبرية ضرورية. على سبيل المثال، أاسطوانة قياس متدرجةمفيد لقياس كميات السائل بدقة. أبوتقة الكوارتزيمكن استخدامها لتجارب درجات الحرارة العالية، و أقمع فصل الكوارتزمثالية لفصل السوائل غير القابلة للامتزاج.

Quartz Separating Funnel2

الاستنتاج والدعوة إلى العمل

توفر البرامج الوسيطة المخصصة في Quartz Flask طريقة قوية لتحسين وظائف تطبيقات الويب وأمانها وأدائها. سواء كنت بحاجة إلى تسجيل الطلبات، أو مصادقة المستخدمين، أو الاستجابات في ذاكرة التخزين المؤقت، يمكن تصميم البرامج الوسيطة وفقًا لاحتياجاتك المحددة.

باعتباري موردًا لقارورة الكوارتز، فأنا ملتزم بتقديم منتجات عالية الجودة والدعم لمساعدتك في بناء تطبيقات ويب قوية. إذا كنت مهتمًا بشراء Quartz Flask أو لديك أي أسئلة حول البرامج الوسيطة المخصصة، فلا تتردد في الاتصال بنا لمناقشة الشراء. نحن هنا لمساعدتك في تحقيق أقصى استفادة من قارورة الكوارتز في مشاريعك.

مراجع

  • توثيق القارورة
  • مستودع جيثب لقارورة الكوارتز

إرسال التحقيق

منشورات المدونة الشائعة