FastAPI چیست و چه کاربردهایی دارد؟

روزی که قرار بود همکار جدیدمان با پایتون API بسازد فکر میکرد قرار است با کلی کد و تنظیمات پیچیده سروکله بزند. همان اول کار خستگی فکری در جانش نشسته بود. اما با راهنماییهای مدیرش با FastAPI آشنا شد. میگفت:« وقتی دیدم چقدر کارم راه افتاده یک آخیش از ته دلم گفتم. مسیرم خیلی آسونتر شده بود و با چند خط کد تونستم API بسازم». اگر شما هم مثل آن روزهای همکارمان نمیدانید FastAPI چیست، چه کاری انجام میدهد و کجا به کارتان میآید، در این مطلب از مجله دانشکار همراه ما باشید.
FastAPI چیست و چگونه کار میکند؟
FastAPI فریمورک وب برای زبان پایتون است که برای ساخت API استفاده میشود. این فریمورک به برنامهنویسها کمک میکند APIهای سریع و قدرتمند را با کدهای سادهتر توسعه دهند. یکی از ویژگیهای مهم FastAPI پشتیبانی از برنامهنویسی ناهمگام (Asynchronous Programming) است. این قابلیت باعث میشود بتواند چندین درخواست را به شکل بهینه مدیریت کند. به همین دلیل، عملکرد آن از نظر سرعت با فناوریهایی مثل Node.js و Go مقایسه میشود.
FastAPI توسط Sebastián Ramírez ساخته و اولین نسخه آن در سال ۲۰۱۸ منتشر شد. این فریمورک بر پایه دو کتابخانه مهم پایتون کار میکند که در ادامه به آنها پرداختهایم.
نقش Starlette در FastAPI چیست؟
FastAPI مستقیما بر پایه Starlette ساخته شده است. درواقع زمانی که با FastAPI کار میکنید، بخشی از قابلیتهایی که استفاده میکنید در پشت صحنه توسط Starlette فراهم میشوند. Starlette یک فریمورک سبک برای توسعه برنامههای وب در پایتون است و زیرساختهایی مثل مسیریابی درخواستها (Routing)، مدیریت Request و Response، Middleware و WebSocket را فراهم میکند.
برای مثال، فرض کنید کاربر درخواست مشاهده اطلاعات یک محصول را ارسال میکند. یکی از وظایف Starlette این است که تشخیص دهد این درخواست باید به کدام مسیر و بخش از برنامه فرستاده شود. FastAPI این زیرساخت را میگیرد و امکانات بیشتری برای ساخت API به آن اضافه میکند. به همین دلیل، برنامهنویس هنگام استفاده از FastAPI لازم نیست بسیاری از کارهای مربوط به مدیریت درخواستها و ساختار API را بهصورت دستی انجام دهد.
نقش Pydantic در FastAPI چیست؟
سمت دیگر ماجرا به دادهها مربوط میشود. اطلاعاتی که از طریق API دریافت میکنیم همیشه درست و قابلاستفاده نیستند. فرض کنید هنگام ثبتنام کاربر، برنامه انتظار دارد مقدار سن یک عدد بین ۱ تا ۱۲۰ باشد؛ اما کاربر بهجای عدد، یک متن ارسال کند.
در چنین شرایطی از Pydantic استفاده میکنیم. Pydantic به FastAPI کمک میکند دادههای ورودی را بررسی و اعتبارسنجی کند. برنامهنویس مشخص میکند هر داده باید چه نوع و چه شرایطی داشته باشد و Pydantic بررسی میکند اطلاعات دریافتشده با این قوانین مطابقت دارند یا خیر. برای مثال، میتوان تعیین کرد:
- نام کاربری باید بین ۳ تا ۵۰ کاراکتر باشد.
- ایمیل باید فرمت معتبری داشته باشد.
- سن باید عددی بین ۱ تا ۱۲۰ باشد.
- وضعیت فعال بودن کاربر باید مقدار True یا False بگیرد.
اگر اطلاعات ارسالشده با این شرایط مطابقت نداشته باشند، FastAPI میتواند قبل از اجرای منطق اصلی برنامه خطا را تشخیص دهد. Pydantic علاوهبر اعتبارسنجی، در تبدیل دادههای ورودی به ساختارهای قابلاستفاده در پایتون، ساخت پاسخهای API و ایجاد اطلاعات موردنیاز برای مستندات API هم نقش دارد.
برای تسلط به مباحث FastAPI و پاسخ دادن به درخواستهای کاربران و… شرکت در اسکیلکمپ FastAPI دانشکار را به شما پیشنهاد میدهیم.

کاربرد FastAPI
FastAPI زمانی به کار میآید که بخواهیم با پایتون یک API سریع و قابل توسعه بسازیم. از بکاند یک وبسایت و اپلیکیشن گرفته تا انواع سرویس هوش مصنوعی، میتوان از این فریمورک برای ایجاد ارتباط میان بخشهای مختلف یک نرمافزار استفاده کرد. پشتیبانی از برنامهنویسی ناهمگام (Async) هم باعث میشود FastAPI بتواند تعداد زیادی درخواست را به شکل موثرتری مدیریت کند. در این بخش بیشتر با کاربردهای FastAPI آشنا میشویم:
- ساخت بکاند سایت و اپلیکیشن: یکی از کاربردهای اصلی FastAPI توسعه بکاند است. در توسعه بکاند با FastAPI میتوان برنامه را به دیتابیس متصل کرد تا اطلاعات موردنیاز کاربران و سرویسها ذخیره، دریافت و مدیریت شوند. فرض کنید یک اپلیکیشن فروشگاهی دارید. کارهایی مثل ثبتنام و ورود کاربران، دریافت فهرست محصولات، ثبت سفارش یا نمایش اطلاعات حساب کاربری به ارتباط میان فرانتاند و سرور نیاز دارند. با FastAPI میتوان APIهای موردنیاز برای انجام این کارها را ایجاد کرد.
- ساخت و ارائه سرویسهای هوش مصنوعی: FastAPI در نمونه پروژه هوش مصنوعی و یادگیری ماشین هم کاربرد زیادی دارد. برای مثال، فرض کنید با TensorFlow یا PyTorch مدلی ساختهاید که تصاویر را تشخیص میدهد. برای اینکه یک سایت یا اپلیکیشن بتواند از این مدل استفاده کند، باید راهی برای ارسال تصویر و دریافت نتیجه داشته باشد. FastAPI میتواند این ارتباط را ایجاد کند؛ تصویر را از برنامه دریافت کند، آن را برای مدل بفرستد و نتیجه پیشبینی را از طریق API به برنامه برگرداند.
- توسعه میکروسرویسها: در بعضی پروژههای بزرگ، بهجای اینکه تمام قابلیتهای نرمافزار در یک برنامه قرار بگیرند، آنها را به سرویسهای کوچکتر و مستقل تقسیم میکنند. به این معماری میکروسرویس گفته میشود. برای مثال، یک فروشگاه اینترنتی میتواند سرویسهای جداگانهای برای کاربران، محصولات، پرداخت و ارسال سفارش داشته باشد. سبک بودن و عملکرد مناسب FastAPI باعث شده بتوان از آن برای توسعه چنین سرویسهایی استفاده کرد.
- ساخت برنامههای بلادرنگ: برخی برنامهها باید اطلاعات را تقریبا همان لحظهای که ایجاد میشوند، میان کاربر و سرور جابهجا کنند. چت آنلاین یکی از مثالهای ساده آن است؛ کاربر انتظار دارد پیام جدید را بدون رفرش کردن صفحه دریافت کند. FastAPI با کمک قابلیتهای Starlette از فناوریهایی مثل WebSocket پشتیبانی میکند. به همین دلیل میتوان از آن در توسعه قابلیتهایی مثل چت آنلاین، دریافت زنده اطلاعات دستگاههای IoT و سرویسهایی که به ارتباط مداوم با سرور نیاز دارند استفاده کرد.
- توسعه بکاند سرویسهای تحت وب: FastAPI برای توسعه بکاند سرویسهای تحت وب و نرمافزارهای SaaS نیز قابل استفاده است. کارهایی مثل ایجاد، دریافت، ویرایش و حذف اطلاعات کاربران یا محصولات را میتوان از طریق APIهای ساختهشده با FastAPI انجام داد. FastAPI همچنین میتواند در کنار ابزارهای ارتباط با پایگاه داده مانند SQLAlchemy قرار بگیرد تا اطلاعات موردنیاز برنامه از دیتابیس دریافت یا در آن ذخیره شوند.

ویژگیهای FastAPI
FastAPI علاوهبر سرعت بالا، ابزارهایی را در اختیار برنامهنویس قرار میدهد که بسیاری از کارهای رایج در توسعه API را سادهتر میکنند. مهمترین ویژگیهای FastAPI در جدول زیر نوشته شدهاند.
| ویژگی | توضیح |
|---|---|
| سرعت و عملکرد بالا | FastAPI یکی از فریمورکهای پایتون برای ساخت API است و بر پایه ابزارهایی مثل Starlette و Pydantic کار میکند. |
| پشتیبانی از Async | از async و await پایتون پشتیبانی میکند و میتواند درخواستهای همزمان را بهتر مدیریت کند. |
| اعتبارسنجی دادهها | با کمک Pydantic نوع و ساختار دادههای ورودی را بهصورت خودکار بررسی میکند. |
| مستندات خودکار API | مستندات تعاملی API را با ابزارهایی مانند Swagger UI و ReDoc ایجاد میکند. |
| Dependency Injection | امکان تعریف و استفاده دوباره از وابستگیهایی مثل اتصال دیتابیس، احراز هویت و تنظیمات را فراهم میکند. |
| امکانات امنیتی | ابزارهایی برای استفاده از روشهایی مثل OAuth2، JWT، API Key و HTTP Basic در اختیار توسعهدهنده قرار میدهد. |
| اجرای کارها در پسزمینه | با BackgroundTasks میتوان بعضی کارهای سبک را پس از ارسال پاسخ به کاربر انجام داد. |
| WebSocket و Streaming | از ارتباط مداوم با WebSocket و ارسال تدریجی دادهها با Streaming پشتیبانی میکند. |
مزایا و معایب FastAPI چیست؟
FastAPI با وجود سرعت بالا و امکانات متنوع، برای هر پروژهای بهترین انتخاب نیست. انتخاب این فریمورک به نوع پروژه، معماری نرمافزار و نیازهای تیم توسعه بستگی دارد. برای تصمیمگیری بهتر، مزایا و معایب FastAPI را در ادامه بررسی میکنیم.
مزایای FastAPI
بخش زیادی از مزایای FastAPI به سادهتر و سریعتر شدن فرایند توسعه API برمیگردد. این فریمورک بعضی از کارهای تکراری را خودکار میکند و در عین حال ابزارهای مناسبی برای مدیریت درخواستها و دادهها در اختیار برنامهنویس قرار میدهد. مهمترین مزایای FastAPI عبارتاند از:
- سرعت و عملکرد بالا: FastAPI یکی از فریمورکهای پایتون برای توسعه API است و میتواند تعداد زیادی درخواست را با عملکرد مناسبی پردازش کند.
- توسعه سریعتر API: قابلیتهایی مثل اعتبارسنجی دادهها و تولید خودکار مستندات باعث میشوند برنامهنویس زمان کمتری برای انجام کارهای تکراری صرف کند.
- مدیریت درخواستهای همزمان: پشتیبانی از async و await امکان مدیریت بهتر درخواستهای همزمان را فراهم میکند؛ بهخصوص زمانی که برنامه منتظر پاسخ دیتابیس یا سرویس دیگری است.
- کاهش خطاهای مرتبط با دادهها: استفاده از Type Hintهای پایتون و Pydantic کمک میکند ورودیهای نامعتبر قبل از رسیدن به منطق اصلی برنامه شناسایی شوند.
- تجربه بهتر هنگام کدنویسی: استفاده گسترده از Type Hintها باعث میشود قابلیتهایی مثل تکمیل خودکار کد و تشخیص برخی خطاها در محیط توسعه بهتر عمل کنند.
- مناسب برای پروژههای APIمحور: FastAPI گزینه مناسبی برای توسعه REST API، میکروسرویسها، بکاند اپلیکیشنها و ارائه سرویسهای هوش مصنوعی و یادگیری ماشین است.
معایب FastAPI
در کنار این مزایا، FastAPI محدودیتهایی هم دارد که بهخصوص هنگام انتخاب فریمورک برای پروژههای بزرگ اهمیت پیدا میکنند. بعضی از این محدودیتها به سبک مینیمال FastAPI و برخی دیگر به نحوه استفاده از قابلیتهای آن مربوط میشوند. مهمترین معایب FastAPI عبارتاند از:
- امکانات آماده کمتر نسبت به Django: FastAPI بهصورت پیشفرض ابزارهایی مثل پنل مدیریت، ORM داخلی یا سیستم کامل مدیریت کاربران را ارائه نمیکند.
- پیچیدگی برنامهنویسی Async: برای استفاده درست از قابلیتهای ناهمگام FastAPI باید با مفاهیم async و await آشنا باشید. استفاده نادرست از آنها حتی میتواند عملکرد برنامه را کاهش دهد.
- اکوسیستم کوچکتر: FastAPI نسبت به فریمورکهای قدیمیتری مثل Django و Flask، افزونهها و ابزارهای جانبی آماده کمتری دارد.
- نبود ساختار مشخص برای پروژههای بزرگ: FastAPI معماری یا ساختار پوشه مشخصی را به برنامهنویس تحمیل نمیکند. این آزادی در پروژههای بزرگ و بدون معماری مناسب میتواند باعث بینظمی کدها شود.
- نیاز به ابزارهای جانبی: برای قابلیتهایی مثل کار با دیتابیس، مهاجرت دیتابیس یا بعضی امکانات موردنیاز یک وباپلیکیشن باید کتابخانهها و ابزارهای دیگری را به پروژه اضافه کنید.
آموزش نصب و راهاندازی FastAPI
برای شروع کار با FastAPI به پایتون و یک سرور ASGI برای اجرای برنامه نیاز دارید. با نصب نسخه Standard، وابستگیهای استاندارد موردنیاز از جمله ابزارهای اجرای برنامه نیز نصب میشوند. در ادامه با ساخت یک API بسیار ساده، مراحل نصب و راهاندازی FastAPI را قدمبهقدم پیش میبریم.
مرحله اول: نصب FastAPI
ابتدا Terminal یا Command Prompt را باز کنید. بهتر است قبل از نصب FastAPI یک محیط مجازی پایتون (Virtual Environment) بسازید تا کتابخانههای هر پروژه از پروژههای دیگر جدا باقی بمانند. برای نصب FastAPI به همراه وابستگیهای استاندارد، دستور زیر را اجرا کنید:
pip install "fastapi[standard]"
پس از پایان نصب، FastAPI و ابزارهای موردنیاز برای اجرای پروژه در دسترس شما قرار میگیرند.
مرحله دوم: ساخت اولین برنامه FastAPI
حالا در پوشه پروژه یک فایل با نام main.py ایجاد کنید. کد زیر را داخل این فایل قرار دهید:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
در این مثال، ابتدا FastAPI را وارد برنامه و سپس یک نمونه از آن با نام app ایجاد میکنیم. مسیر / نیز مشخص میکند که اگر کاربر به آدرس اصلی API درخواست GET ارسال کرد، پاسخ {“Hello”: “World”} برای او برگردانده شود.
مرحله سوم: اجرای FastAPI
بعد از ذخیره فایل، در Terminal وارد پوشهای شوید که فایل main.py در آن قرار دارد. سپس دستور زیر را اجرا کنید:
fastapi dev main.py
با اجرای این دستور، سرور توسعه اجرا میشود و میتوانید API خود را روی سیستم آزمایش کنید.برای اجرای برنامه با Uvicorn نیز میتوانید از دستور زیر استفاده کنید:
uvicorn main:app --reload
در این دستور main به فایل main.py و app به برنامه FastAPI که داخل آن ساختهایم اشاره میکند. گزینه –reload نیز باعث میشود هنگام تغییر کد، سرور در محیط توسعه بهصورت خودکار دوباره بارگذاری شود.
مرحله چهارم: بررسی اجرای API
پس از اجرای سرور، مرورگر را باز کنید و آدرس زیر را وارد کنید:
http://127.0.0.1:8000/
اگر مراحل را درست انجام داده باشید، پاسخ زیر را مشاهده میکنید:
{"Hello": "World"}
FastAPI همچنین بهصورت خودکار مستندات تعاملی API را ایجاد میکند. برای مشاهده این مستندات کافی است آدرس زیر را در مرورگر باز کنید:
http://127.0.0.1:8000/docs
در این صفحه میتوانید مسیرهای API را مشاهده کنید و حتی بدون استفاده از ابزار جداگانه، درخواستهای مختلف را برای آزمایش API ارسال کنید. با انجام همین چهار مرحله، اولین API ساده خود را با FastAPI ساخته و اجرا کردهاید.
امنیت و احراز هویت در FastAPI
در بسیاری از APIها قرار نیست همه کاربران به تمام اطلاعات و قابلیتها دسترسی داشته باشند. برای مثال، اطلاعات حساب کاربری فقط باید در اختیار صاحب همان حساب قرار بگیرد و بعضی بخشهای مدیریتی نیز تنها برای مدیر سیستم قابل دسترسی باشند. به همین دلیل، احراز هویت و کنترل دسترسی بخش مهمی از توسعه API محسوب میشوند. FastAPI برخلاف فریمورکهایی مثل جنگو، سیستم مدیریت کاربران یا دیتابیس کاربران را به شکل آماده ارائه نمیکند. در عوض، ابزارهایی در fastapi.security و سیستم Dependency Injection در اختیار برنامهنویس قرار میدهد تا روش احراز هویت متناسب با پروژه را پیادهسازی کند.
احراز هویت با OAuth2 و JWT
یکی از روشهای رایج برای احراز هویت در APIهای FastAPI، ترکیب OAuth2 و JWT است. در این روش، کاربر ابتدا اطلاعات ورود خود را ارسال میکند و پس از تأیید هویت، یک توکن دریافت میکند. از این توکن برای درخواستهای بعدی و دسترسی به مسیرهای محافظتشده استفاده میشود. این فرایند را میتوان بهصورت ساده در چند مرحله توضیح داد:
- کاربر نام کاربری و رمز عبور خود را ارسال میکند.
- سرور اطلاعات کاربر را بررسی میکند.
- در صورت صحیح بودن اطلاعات، یک توکن JWT ایجاد میشود.
- کاربر این توکن را همراه درخواستهای بعدی ارسال میکند.
- سرور اعتبار توکن را بررسی میکند و در صورت معتبر بودن، اجازه دسترسی به مسیر موردنظر را میدهد.
FastAPI ابزاری مانند OAuth2PasswordBearer را نیز برای دریافت Bearer Token از هدر Authorization در اختیار برنامهنویس قرار میدهد. این روش با مستندات خودکار FastAPI هم یکپارچه میشود و امکان آزمایش احراز هویت از طریق Swagger UI را فراهم میکند.
روشهای دیگر احراز هویت در FastAPI
OAuth2 و JWT تنها روشهای قابل استفاده در FastAPI نیستند. با توجه به نوع پروژه میتوان روشهای دیگری را هم برای احراز هویت انتخاب کرد:
- HTTP Basic: نام کاربری و رمز عبور همراه درخواست ارسال میشوند. این روش بیشتر برای سناریوهای ساده یا ارتباطات داخلی کاربرد دارد و باید همراه HTTPS استفاده شود.
- API Key: کاربر یا سرویس یک کلید اختصاصی دریافت میکند و آن را همراه درخواستها میفرستد. این روش در APIهای توسعهدهندگان و ارتباط میان سرویسها کاربرد دارد.
- Session و Cookie: اطلاعات نشست کاربر در سمت سرور مدیریت میشود و مرورگر از Cookie برای شناسایی نشست استفاده میکند. این روش بیشتر در وباپلیکیشنهای سنتی کاربرد دارد.
نکات مهم برای افزایش امنیت FastAPI
پیادهسازی احراز هویت بهتنهایی برای امن کردن یک API کافی نیست. نحوه ذخیره رمزهای عبور، اعتبارسنجی ورودیها و مشخص کردن سرویسهایی که اجازه ارتباط با API را دارند نیز روی امنیت برنامه تأثیر میگذارند. هنگام توسعه پروژههای FastAPI بهتر است به موارد زیر توجه کنید:
- رمزهای عبور را بهصورت امن Hash کنید: رمز عبور کاربران نباید بهصورت متن ساده در دیتابیس ذخیره شود و باید از الگوریتمهای مناسب برای Hash کردن آن استفاده کنید.
- ورودی کاربران را اعتبارسنجی کنید: با استفاده از مدلهای Pydantic میتوانید نوع و ساختار اطلاعات دریافتی را قبل از استفاده در برنامه بررسی کنید.
- CORS را محدود کنید: مشخص کنید چه دامنههایی اجازه ارسال درخواست به بکاند را دارند و در محیط Production دسترسی را بدون دلیل برای تمام دامنهها باز نگذارید.
- کلیدها و اطلاعات حساس را در کد قرار ندهید: مواردی مانند Secret Key و اطلاعات اتصال به سرویسها بهتر است از طریق متغیرهای محیطی مدیریت شوند.
- آپلود فایل را کنترل کنید: نام، نوع و محتوای فایلهای دریافتی از کاربران را بدون بررسی معتبر در نظر نگیرید.
- از HTTPS استفاده کنید: اطلاعات حساس و توکنهای احراز هویت باید از طریق ارتباط رمزنگاریشده منتقل شوند.
با شرکت در بوتکمپ جنگو علاوهبر تسلط به مباحث فوق به لینوکس و سایر مهارتهای مورد نیاز مسلط شوید.

مقایسه FastAPI با Flask و Django
FastAPI تنها گزینه پایتون برای توسعه بکاند نیست و Flask و Django هم از فریمورکهای شناختهشده این زبان هستند. تفاوت اصلی آنها به نوع پروژه و امکاناتی برمیگردد که در اختیار برنامهنویس قرار میدهند. FastAPI بیشتر روی توسعه APIهای سریع و مدرن تمرکز دارد، Flask سبک و انعطافپذیر است و Django مجموعه گستردهتری از ابزارها را برای توسعه یک وباپلیکیشن کامل ارائه میکند.
| معیار مقایسه | FastAPI | Flask | Django |
|---|---|---|---|
| کاربرد اصلی | ساخت API، میکروسرویس و بکاند مدرن | وباپلیکیشنهای سبک، نمونه اولیه و سرویسهای کوچک | توسعه وباپلیکیشنهای کامل و بزرگ |
| سرعت و عملکرد | بالا؛ با پشتیبانی بومی از Async | متوسط؛ بیشتر بر پایه پردازش همزمان | متوسط؛ امکانات بیشتر سربار بیشتری هم ایجاد میکنند |
| پشتیبانی از Async | پشتیبانی بومی از async/await | پشتیبانی محدودتر | پشتیبانی میکند، اما معماری آن از ابتدا بر پایه Async طراحی نشده است |
| اعتبارسنجی دادهها | با Pydantic انجام میشود | معمولا به ابزارهای جانبی نیاز دارد | ابزارهای داخلی و کتابخانههای مرتبط برای این کار در دسترساند |
| کار با دیتابیس | ORM داخلی ندارد | ORM داخلی ندارد | Django ORM را بهصورت داخلی ارائه میکند |
| پنل مدیریت | ندارد | ندارد | پنل مدیریت آماده دارد |
| مستندات API | مستندات OpenAPI و Swagger را خودکار ایجاد میکند | به ابزارهای جانبی نیاز دارد | بهصورت پیشفرض مستندات API خودکار ارائه نمیکند |
| انعطافپذیری | بالا | بسیار بالا | ساختارمندتر و محدودتر از Flask |
| یادگیری | برای استفاده از قابلیتهای پیشرفته به آشنایی با Async نیاز دارد | شروع کار با آن نسبتا ساده است | به دلیل امکانات و ساختار گستردهتر، مفاهیم بیشتری برای یادگیری دارد |
| مناسب برای | API، هوش مصنوعی، میکروسرویس و برنامههای بلادرنگ | MVP، پروژههای کوچک و سرویسهای ساده | فروشگاه اینترنتی، SaaS و وباپلیکیشنهای بزرگ |
در نهایت، FastAPI یک فریمورک سریع و مدرن برای ساخت API با پایتون است که با امکاناتی مثل اعتبارسنجی دادهها، مستندسازی خودکار و پشتیبانی از برنامهنویسی ناهمگام، فرایند توسعه API را سادهتر میکند. از این فریمورک میتوان برای توسعه بکاند، میکروسرویسها، برنامههای بلادرنگ و سرویسهای هوش مصنوعی استفاده کرد. البته FastAPI برای همه پروژهها بهترین گزینه نیست؛ بنابراین بهتر است پیش از انتخاب آن، نیازهای پروژه و تفاوتش با فریمورکهایی مثل Django و Flask را در نظر بگیرید
منابع: geeksforgeeks.org ،apxml.com





یک دیدگاه