FastAPI یک وبفریمورک مدرن، فوقالعاده سریع و خیلی محبوب Async مبتنی بر Python 3.7+ برای ساخت APIهای وب در پایتون هست (توسعه بک اند) که در سال 2018 معرفی شد. FastAPI از ASGI framework یعنی Starlette و از uvicorn به عنوان سرور استفاده میکنه. این یعنی سرعتش حدوداً ۴ تا ۶ برابر سریعتر از Flask و ۲ تا ۳ برابر سریعتر از Django REST Framework (DRF) هست. البته سرعتش در حد فریمورکهای سطح پایین مثل Go نیست اما برای پایتون سریعترین انتخاب میتونه باشه.
اصلا این فریم ورک ها کارشون چیه؟
وقتی یک اپلیکیشن موبایل، وبسایت، نرمافزار، یا حتی ربات تلگرام بخواد با سرور ارتباط برقرار کنه، باید از یک API (رابط برنامهنویسی) استفاده کنه. مثلا اپ ها در اندروید وقتی باز میشه یک درخواست “لیست محصولات را بده” میفرسته به سرور و سرور هم جواب میده “این هم لیست محصولات”. به این ارتباط میگن API (Application User Interface) . اما ساختن این API از صفر (از لحاظ امنیت، سرعت، مدیریت درخواستها، ورودی و خروجی، Route، خطاها و…) خیلی سخت و زمان بر هست. اینجاست که فریمورک API وارد میشه و خودش یک سری تسک ها رو مدیریت میکنه مثل:
- مدیریت Route ها
- گرفتن داده ورودی (Request Handling)
- اعتبارسنجی ورودیها (Validation)
- ارسال خروجی (Response)
- اتصال به دیتابیس
- مدیریت خطاها (Error Handling)
- امنیت (Security) : استفاده از Token ، JWT، OAuth، Session، CSRF و CORS
- سرعت و پرفورمنس
- مدیریت سرور و درخواستهای همزمان
حالا چه فریم ورک هایی وجود دارن؟
میشه گفت ۱۰ تا زبان اصلی در دنیا وجود داره برای توسعه وب و توی هر کدوم برای توسعه فرانت و بک یک سری فریم ورک تعریف شده. مثلا در JavaScript / TypeScript که زبان شماره ۱ در دنیای وب هست برا توسعه بک اند فریم ورک های Node.js ، Express.js ، Fastify و NestJS وجود دارن که از معروف ترین ها یا در زبان Python فریم ورک های Django ، Django REST Framework (DRF) ، Flask و FastAPI از مشهور ترین ها هستن. همینطور در زبان جاوا فریم ورک Spring Boot و در PHP فریم ورک Laravel (پادشاه PHP) رو داریم. از زبان های دیگه میشه Go (Golang) ، Ruby و C# / .NET رو در ادامه این لیست آورد که هر کدوم فریم ورک های خودشون رو دارن
چرا باید فست ای پی آی رو انتخاب کرد؟
بطور کلی توسعه بک اند پیچیده تر و سنگین تر از فرانت هست و زبان پایتون به دلیل داشتن سینتکس ساده، خوانا و نزدیک به زبان انسان بودن انتخاب بهتری هست. همچنین اگه پروژه بکاند در توسعه نیاز به هوش مصنوعی، ML یا پردازش داده داشته باشه، جاوااسکریپت نمیتونه در مقابل هزاران کتابخانه موجود در پایتون رقابت کنه. پس در مقابل فریم ورک هایی مثل Node.js و NestJS در جاوااسکریپت، انتخاب من FastAPI توی پایتون هست قطعا. حالا بریم ویژگی های این فریم ورک رو ببینیم.
ویژگی های FastAPI در API نویسی
تجربه من میگه برای وب سایت ها و پروژه های سبک از جنگو استفاده نکنم. چون اگه به ساختار این این فریم ورک (جنگو) نگاه کنی متوجه میشی که خیلی گسترده طراحی شده و در پوژه های سنگین و بزرگ بیشتر قابلیت هاش نمایان میشه. قبل از FastAPI من از flask استفاده میکردم. چون خیلی سبکه و کار رو راه می انداخت. اما فست ای پی آی یا ویژگی هایی که داره و خیلی سریع تر از فلسک هست قطعا انتخاب بهترین هست. اینم تعدادی از مهمترین ویژگی های این فریم ورک:
- 🔥 فوقالعاده سریع (تقریباً همسطح Node.js و Go)
- 📝 تولید خودکار داکیومنت Swagger / OpenAPI
- ⚡ پشتیبانی کامل از async/await
- 🛡 بررسی نوع داده (Validation) اتوماتیک
- 🚀 بسیار مناسب برای میکروسرویسها و APIهای سنگین
مثال ساده از یک API در FastAPI
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Hello FastAPI!"}
و برای اجراش:
uvicorn main:app --reload
FastAPI در دنیای امروز
خیلی از شرکت ها برای توسعه وب اپ های خود از این فریم ورک استفاده کردن. مثل Netflix ، Uber و Microsoft / Azure . پس این فریم ورک در توسعه اپ های بسیار سریع و مدرن نقش مهمی داره. امیدوارم واستون مفید باشه این پست. برای یادگیری و استفاده از این فریم ورک وارد قسمت داکیومنتش بشید. همچنین در داکیومنت ها قسمتی هست برای افرادی که تجربه استفاده ازش رو قبلا داشتن و نکات پیشرفته تری رو توضیح میده.

