صفحه اصلی - مقاله - جزئیات

چگونه یک میان افزار سفارشی در Quartz Flask ایجاد کنیم؟

دیوید اسمیت
دیوید اسمیت
دیوید به عنوان مدیر فروش شرکت محصولات Alpha County Alpha County County ، با مسئولیت محدود فعالیت می کند.

در حوزه توسعه وب، Flask، یک چارچوب وب سبک وزن و در عین حال قدرتمند پایتون، به دلیل سادگی و انعطاف پذیری آن محبوبیت قابل توجهی به دست آورده است. فلاسک کوارتز که به خاطر کارایی و قابلیت اطمینان بالا شهرت دارد، نقشی کلیدی در این فضا دارد. به عنوان یک تامین کننده Quartz Flask، من اهمیت میان افزار سفارشی را در افزایش عملکرد یک برنامه Quartz Flask درک می کنم. در این پست وبلاگ، من شما را از طریق فرآیند ایجاد میان افزار سفارشی در Quartz Flask راهنمایی می کنم.

درک میان افزار

قبل از ایجاد میان افزار سفارشی، بسیار مهم است که بدانیم میان افزار چیست. میان افزار در یک برنامه وب به عنوان پلی بین مشتری و برنامه عمل می کند. درخواست‌ها و پاسخ‌ها را رهگیری می‌کند و به شما امکان می‌دهد تا عملیات‌هایی مانند ثبت‌نام، احراز هویت، و پیش پردازش داده‌ها را قبل از رسیدن درخواست به تابع view یا پس از تولید پاسخ انجام دهید.

در 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('THREQU) environ.get('PATH_INFO') headers = '\n'.join([f'{k}: {v}' for k, v in environ.items() if k.startswith('HTTP_')]) print(f"Request: {method} {url}\nHeaders:\n#{headers return the app next. start_response) # برنامه Flask را با میان افزار بپیچید app.wsgi_app = RequestLoggingMiddleware(app.wsgi_app) @app.route('/') def index(): return 'Hello, World!' if __name__ == '__main__': app.run(debug=True)

در این کد ابتدا یک کلاس تعریف می کنیمRequestLoggingMiddleware. را__ داغ__متد میان افزار را با برنامه Flask مقداردهی اولیه می کند. را__تماس__روش هسته میان افزار است. درخواست ورودی را رهگیری می کند، اطلاعات مربوطه را ثبت می کند و سپس برنامه بعدی در پشته (در این مورد، خود برنامه Flask) را فراخوانی می کند.

در نهایت، اپلیکیشن Flask را می پیچیمwsgi_appبا میان افزار سفارشی ما این تضمین می کند که هر درخواست قبل از رسیدن به تابع view از میان افزار ما عبور می کند.

افزودن میان افزار احراز هویت

یکی دیگر از موارد استفاده رایج میان افزارها، احراز هویت است. بیایید یک میان افزار ایجاد کنیم که یک کلید API معتبر را در هدر درخواست بررسی کند.

from quartz_flask import Flask, abort app = Flask(__name__) class APIKeyAuthenticationMiddleware: def __init__(self, app, valid_api_key): self.app = app self.valid_api_key = valid_api_key def __call__(self_res, environ) environ.get('HTTP_API_KEY') if api_key != self.valid_api_key: abort(401) # بازگشت غیرمجاز self.app(environ, start_response) # کلید API معتبر را تنظیم کنید valid_api_key = 'مخفی - api - کلید' # را با برنامه میانی برنامه فلاسک بپیچید. APIKeyAuthenticationMiddleware(app.wsgi_app، valid_api_key) @app.route('/protected') def protected(): return 'این یک مسیر محافظت شده است!' if __name__ == '__main__': app.run(debug=True)

در این مثال،APIKeyAuthenticationMiddlewareکلاس وجود یک را بررسی می کندAPI_KEYدر سرفصل های درخواست اگر کلید API ارائه شده با کلید API معتبر مطابقت نداشته باشد، خطای 401 Unauthorized را برمی گرداند. در غیر این صورت، به درخواست اجازه می دهد تا به تابع view ادامه دهد.

استفاده از میان افزار برای بهینه سازی عملکرد

از میان افزار همچنین می توان برای بهینه سازی عملکرد برنامه Quartz Flask خود استفاده کرد. به عنوان مثال، می‌توانید یک میان‌افزار ایجاد کنید که پاسخ‌های مسیرهای خاص را در حافظه پنهان نگه دارد.

from quartz_flask import برنامه زمان واردات فلاسک = Flask(__name__) class ResponseCachingMiddleware: def __init__(self, app, cache_time=60): self.app = app self.cache_time = cache_time self.cache = {} def __call__(self, environ, environ) environ.get('PATH_INFO') if url در self.cache: cached_response، cached_time = self.cache[url] if time.time() - cached_time <self.cache_time: # برگرداندن وضعیت پاسخ حافظه پنهان، headers، body = cached_response start_response یا بازگشت به حالت cached.enersco)de حافظه نهان منقضی شده است، پاسخ برنامه بعدی را فراخوانی کنید = self.app(environ، start_response) status = start_response.status headers = start_response.headers body = ''.join([chunk.decode() برای قطعه در پاسخ]) # پاسخ را کش self.cache[url] = ((وضعیت، هدرهای W وسط، بدنه برنامه) برگرداند. app.wsgi_app = ResponseCachingMiddleware(app.wsgi_app, cache_time=30) @app.route('/cached') def cached(): return 'این پاسخ ذخیره شده است!' if __name__ == '__main__': app.run(debug=True)

در این کد،ResponseCachingMiddlewareکلاس پاسخ های درخواست ها را برای مدت زمان مشخصی در حافظه پنهان نگه می دارد. اگر درخواستی برای همان URL در مدت زمان کش انجام شود، به جای پردازش مجدد درخواست، پاسخ ذخیره شده را برمی گرداند.

ظروف شیشه ای آزمایشگاهی مرتبط برای کاربردهای فلاسک کوارتز

در زمینه تحقیق و توسعه که اغلب از فلاسک کوارتز استفاده می شود، ظروف شیشه ای آزمایشگاهی خاص می تواند ضروری باشد. به عنوان مثال، الفسیلندر اندازه گیری فارغ التحصیلبرای اندازه گیری دقیق حجم مایع مفید است. الفبوته کوارتزمی تواند برای آزمایش های دمای بالا استفاده شود، و الفقیف جداسازی کوارتزبرای جداسازی مایعات غیر قابل اختلاط ایده آل است.

Quartz Separating Funnel2

نتیجه گیری و فراخوان برای اقدام

میان افزار سفارشی در Quartz Flask یک راه قدرتمند برای افزایش عملکرد، امنیت و عملکرد برنامه های کاربردی وب شما ارائه می دهد. چه نیاز به ثبت درخواست‌ها، احراز هویت کاربران یا پاسخ‌های حافظه پنهان داشته باشید، میان‌افزار را می‌توان بر اساس نیازهای خاص شما تنظیم کرد.

به عنوان یک تامین کننده Quartz Flask، من به ارائه محصولات با کیفیت بالا و پشتیبانی برای کمک به شما در ساخت برنامه های کاربردی وب قوی اختصاص دارم. اگر علاقه مند به خرید Quartz Flask هستید یا در مورد میان افزار سفارشی سؤالی دارید، برای بحث در مورد خرید با ما تماس بگیرید. ما اینجا هستیم تا به شما در استفاده حداکثری از فلاسک کوارتز در پروژه های خود کمک کنیم.

مراجع

  • مستندات فلاسک
  • مخزن Quartz Flask GitHub

ارسال درخواست

پست‌های محبوب وبلاگ