codingcogs' logo
دوره ی جامع FastAPI

دوره ی جامع FastAPI

3,399,000 تومان

8 فصل
مدرک اتمام دوره
پشتیبانی دائمی
FastAPI logo

FastAPI چیست؟

FastAPI یک فریم ورک توسعه ی Back-End مدرن، سریع و کم مصرف پایتونیه که مبتنی بر انواع داده های پایتون کار می کنه!

از پایتون تا برنامه نویسی وب

پایتون پرطرفدارترین زبان برنامه نویسی و پرکاربرد ترین زبان برنامه نویسی دنیاست و در کنار این مسئله اصولی به نام Zen رو رعایت میکنه که باعث میشه برنامه های پایتونی خوانا تر و بهتر از بقیه زبان های برنامه نویسی باشن. همچنین پایتون به عنوان یک زبان برنامه نویسی سطح بالا، ساده ترین روند یادگیری رو داره! پایتون یک زبان برنامه نویسی قدرتمنده و برنامه نویسی پایتون کار ساده ای نیست؛ ولی ساده میشه یادش گرفت!


حالا کنار همه ی این موارد! فرض کنید یک برنامه نویس پایتون هستید و میخواید یه برنامه ی Back-End بنویسید! آیا بهتر نبود که به جای یاد گرفتن یک زبان برنامه نویسی دیگه با خود پایتون برنامه ی بک اند رو می نوشتید؟

بله بهتر بود!


این مسئله باعث پیدایش کلی فریم ورک و کتابخونه برای زبان برنامه نویسی پایتون شد و اکثر این کتابخونه ها و فریم ورک ها به جز Djangoو Flask منسوخ شدن! Django یک فریم ورک بی نظیر بود و هست و هر روز هم از روز قبل بهتر میشه اما بیشتر مناسب پروژه های بزرگه تا کارای کوچیک و میکروسرویس ها! Flask هم با اینکه مناسب کارای کوچیک تر بود اما سرعت اصلا خوبی نداشت و نمیتونست درخواست های مختلف رو هم زمان بررسی کنه و پاسخ بده و ساختارش اجازه پیش اومدن انواع مشکلات مختلف رو میداد! پس توسعه دهنده های پایتون رسما حق نداشتن تا میکروسرویس توسعه بدن و اگر Django مناسب یک بخش پروژه نبود، پروژه با هر زبان دیگه ای به غیر از پایتون نوشته میشد!

از سیبیل تا تلسکوپ فضایی جیمز وب و Chat GPT

مشکلات بالا وجود داشت تا یه آقای مهربونی به نام سباستین رمیرز یه فریم ورک جدید نوشت!

Captains_Headshot_Resize_Sebastian-Ramirez_600x600_v1

اسم این فریم ورک رو FastAPI گذاشت و بدون هیچ چشم داشتی، شروع به توسعه ی این فریم ورک کرد! این فریم ورک روی یک پروژه ی پایتونی دیگه به اسم Starlette بنا شده بود ولی از اونجایی که Starlette یک مقداری پیچیده و سخت بود باعث شد که موفق نشه اما FastAPI سریع، قابل اطمینان و ساده بود.

الآن اما خیلی از روزهای ابتدایی FastAPI گذشته و این فریم ورک در بخش هایی از برنامه ی ارتباطی و دریافت تصویر تلسکوپ مشهور جیمز وب و ChatGPT استفاده میشه!

از Django تا FastAPI

از زمان معرفی FastAPI ، فریم ورک Django هم بیکار ننشسته و خیلی ویژگی های مهم و اساسی بهش اضافه شده اما با توجه به بزرگتر بودن هسته ی Django توسعه دهنده ها از جنگو برای بعضی از میکروسرویس ها استفاده نمی کنن و ترجیح میدن این کار رو با FastAPI انجام بدن! ضمنا از اونجایی که FastAPI در اختیار پایتون عمل میکنه و بر عکس جنگو که پایتون رو به خدمت گرفته توسعه پیدا میکنه، بهمون اجازه میده تا از هر ابزار پایتونی ای که دوست داریم استفاده کنیم تا اینکه به فکر جاگذاری اون توی قالب جنگو باشیم!

از Flask تا FastAPI

فریم ورک Flask در کمال سادگی به خاطر عدم رعایت هیچ اصولی کابوس توسعه دهنده ها بود و همچنین با اینکه از Django سبک تر بود، سرعت و عملکرد خیلی خیلی بدتری داشت! در واقع FastAPI میخ آخری بود که روی تابوت Flask کوبیده شد و تمام مشکلات Flask رو رفع کرد و کاملا جای این فریم ورک رو توی صنعت گرفت و بعد شروع کرد به گرفتن سهم NodeJS و PHP و GO.

ویژگی های FASTAPI

ویژگی های کلیدی FastAPI:

  • سرعت: سریع تر از NodeJS و Go
  • سریع تر نوشتن کد: 2 تا 3 برابر سریع تر میتوانید ویژگی های مختلف را نسبت به هر زبان و فریم ورک دیگری به برنامه ی خود اضافه کنید.
  • باگ های کمتر: احتمال خطای انسانی حدود 40% کاهش یافته است.
  • قابل درک: زمان دیباگ برنامه با سادگی استفاده و پشتیبانی کد ادیتورها به حداقل رسیده است.
  • ساده: این فریم ورک ایجاد شده که ساده، خوانا و قابل فهم باشد.
  • کوتاه: برنامه های کوتاه و ساده را به سرعت بنویسید.
  • قدرتمند: داکیومنتیشن برنامه ی شما به صورت خودکار تولید می شود! پس برنامه را بنویسید و به سرعت تست و دیپلوی کنید!

  • مبتنی بر استاندارد ها: این فریم ورک مبتنی بر استانداردهای OpenAPI و JSON Schema توسعه داده شده است.

دیگر چه چیزهایی در این دوره وجود دارد؟

دوره ی جامع FastAPI بیشتر از یک آموزش FastAPI است. در این دوره شما علاوه بر یادگیری عمیق و کاربردی FastAPI کار با دیتابیس های مختلفی را می آموزید و با مفاهیم بسیار مهم برنامه نویسی بک اند آشنا می شوید. همچنین بعضی از ابزار قدیمی تر FastAPI را با جایگزین های مدرن تر و بهتر عوض می کنیم و پس گذراندن این دوره شما به یکی از بهترین متخصصین FastAPI در دنیا تبدیل می شوید.

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

  • باید حداقل 4 گیگابایت رم داشته باشید و پردازنده شما از قابلیت مجازی سازی پشتیبانی کند!
  • باید با زبان برنامه نویسی پایتون و شی گرایی در این زبان آشنا باشید.(فصل 5 ام دوره ی کارگاه پایتون)
    همچنین بهتر است با کتابخانه های استاندارد پایتون(فصل 6) و مفاهیم Typing در زبان پایتون(فصل 14) آشنا باشید تا بتوانید سریع تر با دوره ارتباط برقرار کنید.
  • در این دوره از داکر نیز استفاده خواهیم کرد، البته نیازی به یادگیری داکر به صورت دقیق وجود ندارد اما یادگیری داکر میتواند در آینده ی حرفه ای شما تاثیر بسزایی داشته باشد.

فصل های دوره

  • 1- معرفی دوره
  • 2- قراردادها و کلمات تخصصی
  • 3- دسترسی به پشتیبانی
  • 4- محیط جدید توسعه (آپدیت)
  • 5- Poetry و UV
  • 6- اگر برای یادگیری عجله دارید
  • 1- معرفی فصل
  • 2- پیش نیاز این فصل(آپدیت Poetry)
  • 3- شروع کار با گیت
  • 4- نصب گیت
  • 5- دستورات مقدماتی گیت
  • 6- برنچ های گیت
  • 7- ایجاد محیط های ایزوله برای توسعه
  • 8- ارتباط با محیط مجازی
  • 9- فعال و غیرفعال کردن محیط مجازی
  • 10- راه اندازی داکر
  • 11- Dockerfile
  • 12- یک اپلیکیشن ساده با FastAPI (آپدیت با Poetry)
  • 13- بروزرسانی هسته‌ی پایتون و پکیج‌های خارجی
  • 14- خلاصه این فصل
  • 1- Routing
  • 2- پیش نیاز این بخش
  • 3- مفهوم Routing در FastAPI
  • 4- Routing ساده در FastAPI
  • 5- APIRouter
  • 6- Validation با Pydantic
  • 7- Nested Models
  • 8- Path parameters
  • 9- پارامتر های Query
  • 10- دیتای درخواست ها - Request Body
  • 11- FastAPI Automatic Docs
  • 12- Swagger
  • 13- ReDoc
  • 14- تکمیل CRUD
  • 15- خلاصه Routing
  • 16- Reponse و Error Handling
  • 17- پیش نیاز این بخش
  • 18- Response
  • 19- Response Header
  • 20- Response body
  • 21- Status Code
  • 22- Response model
  • 23- Error handling
  • 24- خلاصه این بخش
  • 25- Templating
  • 26- پیش نیاز این بخش
  • 27- Jinja
  • 28- Jinja Filters
  • 29- if در Jinja
  • 30- loops در Jinja
  • 31- Macros در Jinja
  • 32- Jinja در FastAPI
  • 33- خلاصه این بخش
  • 1- معرفی فصل
  • 2- پیش نیاز این فصل
  • 3- ساختار اپلیکیشن های FastAPI
  • 4- پایه‌ی برنامه‌ی Planner
  • 5- پیاده‌سازی modelها
  • 6- پیاده‌سازی routeها
  • 7- User routes
  • 8- Events routes
  • 9- خلاصه فصل
  • 1- Database
  • 2- پیش نیاز این بخش
  • 3- SQLModel
  • 4- Tables
  • 5- Rows
  • 6- Sessions
  • 7- ساخت database
  • 8- Create
  • 9- Read
  • 10- Update
  • 11- Delete
  • 12- اتصال به MongoDB
  • 13- Document
  • 14- تنظیم و اتصال به database
  • 15- شروع ساخت CRUD
  • 16- Create
  • 17- Read
  • 18- Update
  • 19- Delete
  • 20- Event routes و دیباگ اتصال به Database
  • 21- Users Routes
  • 22- خلاصه این بخش
  • 23- Authentication
  • 24- پیش نیاز این بخش
  • 25- متدهای مرسوم Authentication
  • 26- Dependency injection
  • 27- ساخت و استفاده از dependency
  • 28- OAuth2 و JWT
  • 29- Hash کردن پسوردها
  • 30- ساخت و Verify کردن access token
  • 31- user authentication dependency
  • 32- user sign-in
  • 33- event authorization
  • 34- event document و آپدیت نهایی
  • 35- CORS
  • 36- خلاصه این بخش
  • 37- Testing
  • 38- پیش نیاز این بخش
  • 39- Unit test با pytest
  • 40- pytest fixtures
  • 41- test environment
  • 42- تست sign-up
  • 43- تست sign-in
  • 44- تست CRUD
  • 45- تست Read
  • 46- تست CREATE
  • 47- تست UPDATE
  • 48- تست DELETE
  • 49- Coverage Test
  • 50- خلاصه این بخش
  • 51- Deployment و Worker و Load Test
  • 1- معرفی فصل
  • 2- پیش نیاز این فصل
  • 3- راه‌اندازی محیط توسعه و نصب پکیج‌ها
  • 4- configuration
  • 5- Representation State Transfer (REST) API
  • 6- request و response
  • 7- Parameter types
  • 8- Path parameters
  • 9- Query parameter
  • 10- Default parameter
  • 11- Optional parameter
  • 12- ترکیب parameter ها
  • 13- Request body
  • 14- Request header
  • 15- Response data
  • 16- form parameters
  • 17- cookies
  • 18- خلاصه‌ی این فصل
  • 1- معرفی فصل
  • 2- پیش نیاز این فصل
  • 3- Structuring و مرتب کردن پروژه‌ی بزرگ
  • 4- پیاده‌سازی سرویس‌های API
  • 5- بکارگیری componentهای یک module
  • 6- main.py
  • 7- exception
  • 8- single status code
  • 9- Multiple status codes
  • 10- HTTPException
  • 11- user-defined HTTPException
  • 12- بازنویسی handler پیش‌فرض
  • 13- تبدیل object به دیتای JSON-compatible
  • 14- API response
  • 15- BackgroundTasks
  • 16- asynchronous path operation
  • 17- middleware
  • 18- خلاصه این فصل
  • 1- معرفی فصل
  • 2- پیش نیاز این فصل
  • 3- IoC/DI
  • 4- dependency function
  • 5- callable class DI
  • 6- nested dependency
  • 7- dependency caching
  • 8- Depends parameter type
  • 9- asynchronous dependency
  • 10- DI design patterns
  • 11- service DI
  • 12- path operator DI
  • 13- router DI
  • 14- اینجکت دپندنسی روی خود فایل main.py
  • 15- قسمت بندی و مرتب سازی یک پروژه بر اساس دپندنسی های موجود
  • 16- لایه مدل
  • 17- لایه ریپازیتوری (repository)
  • 18- فکتوری متد های ریپازیتوری
  • 19- لایه سرویس
  • 20- REST API و لایه سرویس
  • 21- ساختار اصلی پروژه
  • 22- استفاده از کانتینر های خارجی یا third-party
  • 23- استفاده از کانتینر های قابل تنظیم - ابزار Dependency Injector
  • 24- استفاده از کانتینر های ساده - ابزار Lagom
  • 25- استفاده از Lagom در FastAPI
  • 26- اسکوپ قسمت هایی که به دپندنسی نیاز دارن
  • 27- خلاصه این فصل