اگر در حال توسعه ی Api باشید یا قصد داشته باشید که برای سایت یا اپلیکیشن خودتون Api بسازید ، قطعا اسم های زیادی رو شنیدید از Node.js بگیر تا  Laravel و Django Rest . اگر توسعه دهنده ی پایتون هستید قطعا میدونید که در اکوسیستم جنگو ، Django Rest یک ابزار بسیار قدرتمند برای اینکار هست. بین این ها یک فریمورک قدرتمند و مدرن ظهور کرده به اسم FastApi که به زبان پایتون هست و بسیار سریعه. توی این مقاله میخوایم بیشتر با این فریمورک آشنا بشیم و اون رو با دیگر فریمورک های توسعه ی Api مقایسه کنیم.

FastApi چیست؟

FastApi یک فریمورک مدرن و سریع برای ایجاد Api های متنوع با زبان پایتون است. این فریمورک بر پایه دو جز اصلی ساخته شده :

1.Starlette : برای بخش عملکرد (performance) , starlette یک فریمورک بسیار سریع Asgi (Asynchronous Server Gateway Interface) هست که به FastApi اجازه میده تا از برنامه نویسی غیر همزمان (Async) پشتیبانی بکنه.

2.Pydantic : برای بخش داده و اعتبار سنجی ، pydantic کتابخونه ای هست که از type hint پایتون برای اعتبار سنجی ، سریالایز کردن و مستند سازی داده ها  استفاده میکنه.

به نقل از ویکی پدیا ، فست ای پی یک فریمورک مدرن با کارایی بالا برای ساخت رابط های برنامه نویسی کاربردی (Api) با استفاده از پایتون نسخه ۳.۶ و بالاتر است. این فریمورک توسط سباستین رامیرز در سال ۲۰۱۸ معرفی شد و به دلیل سرعت بالا ، استفاده آسان و پشتیبانی از ویژگی های مدرن مانند اعتبار سنجی خودکار داده ها و مستند سازی تعاملی، محبوبیت زیادی کسب کرده است. فست ای پی آی بر پایه Starlette و Pydantic ساخته شده و از استاندارد های OpenApi برای تولید مستندات خودکار پشتیبانی میکند. منبع

چرا باید از FastApi استفاده کنیم؟

۱.عملکرد و سرعت فوق العاده : به لطف Starlette و پشتیبانی FastApi از Async ، این فریمورک  به یکی از  سریعترین فریمورک های توسعه ی Api پایتون تبدیل شده

۲.سرعت بالای توسعه :‌ استفاده از type hint باعت میشه کد های شما کمتر خطا بگیره ، واضح تر و خواناتر باشه.

۳.اعتبارسنجی و مستند سازی :‌ در Django Rest ما Serializers ها را برای اعتبار سنجی داریم . در FastApi تعریف مدل Pydantic همان کار را دقیقا انجام میدهد و اصل «خودت را تکرار نکن» رو به بهترین شکل پیاده میکنه.

4.مستند سازی خودکار : به محض اینکه شما Api خودتون رو با استفاده از مدل های pydantic  می نویسید ، FastApi به طور خودکار برای شما دو صفحه مستندات ایجاد میکنه (Swagger Ui در آدرس /docs) و (ReDoc در آدرس /redoc)

5.سیستم تزریق وابستگی (Dependency Injection) : FastApi دارای یک سیستم تزریق وابستگی قدرتمند و ساده هستش ، این سیستم به شما اجازه میده تا منطق های تکراری مثل بررسی لاگین بودن ،  اتصال به دیتابیس یا بررسی سطح دسترسی  رو در توابع جداگانه بنویسید و به سادگی اون ها رو به view هاتون تزریق کنید.

6.پشتیبانی از async/await : یکی از بزرگترین نقاط قوت FastApi قطعا همینه! که به شما اجازه میده تا عملیات های ورودی و خروجی (I/O) مثل فراخوانی Api های دیگر ، کار با دیتابیس ، یا خواندن فایل ها را به صورت غیر همزمان انجام بدین. این به سرور اجازه میده  تا زمانی که برای یک درخواست منتظر پاسخ دیتابیس هست ، به صورت همزمان به هزاران درخواست دیگه رسیدگی کنه.

مقایسه FastApi با دیگر فریمورک ها

مقایسه FastApi با دیگر فریمورک ها

مقایسه FastApi با Django Rest Framework : هر دو بسیار قدرتمند هستند .دلایلی که باعث میشه با وجود Django Rest از FastApi استفاده کنیم :

۱.وقتی سرعت و عملکرد اولویت باشه

۲.وقتی بخوایم از میکروسرویس استفاده کنیم.

 ۳. وقتی نیاز به عملیات غیر همزمان (async) داریم.

 ۴.وقتی مستند سازی Api برامون مهم هست.

در این شرایط انتخاب FastApi بسیار مناسب هست. ولی اگر :

 ۱.از قبل پروژه جنگو دارید و میخواهید به آن Api اضافه کنید .

 ۲.وقتی به اکوسیستم کامل جنگو مانند پنل ادمین (Django Admin)، ORM قدرتمند، و سیستم احراز هویت داخلی آن نیاز دارید.

 ۳.وقتی پروژه شما یک مونولیت (Monolith) بزرگ و داده-محور است.

 انتخاب Django Rest عقلانی است.

مقایسه FastApi با Node.js : 

عملکرد: FastAPI در بنچمارک‌ها اغلب با Node.js برابری میکند.

چرا FastAPI؟ اگر شما یک توسعه‌ دهنده پایتون هستید، دیگر نیازی به مهاجرت به زبان دیگر (جاوا اسکریپت) برای دستیابی به سرعت بالا ندارید. شما از سادگی پایتون، اکوسیستم غنی آن (مخصوصاً در هوش مصنوعی و علم داده)، و اعتبارسنجی داده بسیار قوی Pydantic بهره‌مند خواهید شد.

جمع بندی

FastApi با ترکیب هوشمندانه Starlette (برای Async) و Pydantic (برای اعتبارسنجی و مستندسازی)، تونسته به یک انتخاب برای ساخت Api های مدرن در پایتون تبدیل بشه.

این فریمورک به توسعه‌دهندگان اجازه میده تا به جای درگیری با تنظیمات پیچیده،  مستند سازی دستی، یا چالش‌ های عملکردی، بر روی نوشتن منطق کسب ‌و کار خودتون تمرکز کنید و این کار رو با سرعتی باور نکردنی (هم در اجرا و هم در توسعه) انجام بدید.