بیشتر از یکسال است که با FastAPI کار میکنم برای همین توی این پست قراره از تجربه ایی که با کار کردن باهاش داشتم براتون بگم. خب FastAPI یک فریم ورک پایتون هست که بر روی Starlette که یک فریم ورک یا ابزار ASGI است بنا شده یا نوشته شده. من از این به بعد در این نوشته بهش "فست" هم میگم.
خب اگر توسعه دهنده پایتون هستید حتما قبلا در مورد جنگو یا فریم ورک فلسک شدید و یا شاید حتی کار هم کردید. خیلی فریم ورک ها با زبان پایتون نوشته شده یکی دیگه از این فریم ورک ها Starlette است که توسعه دهندگانش ASGI framework/toolkit مینامندش. خیلی فریم ورک سبک و خوبیه اما متاسفانه کار کردن باهاش کمی سخته و باید کلی ابزار براش ساخته میشد و این ابزارهای هم غالبا با هم ممکن بود هماهنگ نباشند. یک آقایی با سیبیل های تاب دار به اسم سباستین رمیرز از کشور کلمبیا که بعدش مهاجرت هم کردند به آلمان اومد آنچه را که خودش استفاده کرده بود و کارش را آسان کرده بود با دیگران به اشتراک گذاشت و حاصلش شد کدهای اوپن سورس فریم ورک جدید به نام FastAPI که امروز طرفداران زیادی پیدا کرده و اخیرا هم تعداد ستاره های ریپوزیتوری گیت هابش از فلسک بیشتر شده است. یه مصاحبه هم سکوئیا باهاش داره که شرح داستان زندگیش از زبان خودش هست.
سباستین رمیرز سعی کرد این ابزارها را به هم ربط بده و سعی کرد از بهترین ترکیب ها استفاده کنه و به عبارتی همه چیزهای خوب رو کنار هم جمع کنه مثلا اومد از pydantic یا استاندارهای OpenAPI و یا JSON Schema استفاده کرد حتی اومد بعدش تمپلیت اینجین محبوب Jinja هم توی داکیومنتش قرار داد و توضیح داد چطوری به جای خروجی JSON خروجی HTML تولید بکنید. حتی تو بخش سکوریتی کلاس OAuth2PasswordBearer رو ایجاد کرد که به راحتی بشه توکن ها را بدون فراخوانی میدلورهای روی Starlette بگیریم در واقع همه چیز رو خیلی ساده تر کرد.
و اگر بخوام کلی تر بگم Starlette را کرد فوندانسیون و قسمت های مختلف رو با بهترین ابزارها روی آن بنا کرد و ما امروز به این میگیم فست ای پی آی .
شما با فست میتونید به راحتی REST API بسازید که در واقع نوعی از WebAPI است. و بوسیله RESTAPI ها میتونی بک اند سرویس ها و سایتها را بسازی البته میتونی با استفاده از تمپلیت اینجین خود وب سایت رو هم بسازی. اگر RESTAPI داشته باشی میتونی به هر فرانتی متصلش کنی اعم از اپلیکیشن موبایل یا اپلیکشنهای وب تک صفحه ایی مثلا با React یا VUE.js یا ... حتی میتونی به یک سرویس دیگه متصلش کنید و یا حتی باهاش مایکروسرویس درست کنید.
به نظرم مهمترین مذیتش سرعت بالا است چون روی استارلت بنا شده که داره از asyncio استفاده میکنه.
از داکیومنتش راضی هستم خیلی بهتر از هر کتابی توضیح داده و کاملا میشه بهش اعتماد کرد.
شاید قبلا میگفتند پشتیبانی خوبی نداره اما الان خیلی بهتر شده مخصوصا اینکه خیلی ها اخیرا به سمت فست اومدند و ما هم یک گروه تلگرامی به نام فست ای پی آی فارسی راه انداختیم که میتونید عضوش بشید و مشکلات خودتون رو مطرح کنید (البته با رعایت قوانین گروه 😬 ).
من توی اولین پروژه ها خیلی زوایای معماری را تغییر دادم تا بهترین معماری برای کار خودم رو پیدا کنم چیزی که خودم باهاش راحتتر باشم توی این مسیر توضیحات آقای Leonardo Giordani خیلی کمکم کرد مخصوصا این ویدیو که تو EuroPython 2022 بوده و تقریبا از همه جدیدتره.
فکر میکنم اکثر چیزا رو گفتم ولی ممکنه خیلی از سوالات شما هنوز پاسخ داده نشده باشه پس حتما جستجو کنید و یا اگر شما هم تجربه دیگری دارید حتما برام بنویسید.