توسعه بک‌اند با FastAPI فهرست مطالب

توسعه بک‌اند با FastAPI

از اولین endpoint تا یک API کامل، آزموده و امن، در شانزده جلسه

علیرضا م. احمدی

درباره این کتاب

این کتاب حاصل یک دوره شانزده جلسه‌ای توسعه بک‌اند با FastAPI است که در مؤسسه فنی و آموزشی کادوس رشت برگزار می‌شود. دوره ادامه دوره «پایتون پیشرفته» است: فرض بر این است که خواننده کلاس، دکوراتور، مولد، مدیر زمینه، استثنا و async و await را می‌شناسد. هر فصل کتاب دقیقاً برابر با یک جلسه سه ساعته است، به‌علاوه یک فصل مقدماتی در ابتدا که پیش از جلسه اول باید خوانده شود.

هدف کتاب این نیست که فقط دستورهای FastAPI را یاد بدهد. هدف این است که خواننده در پایان بتواند یک بک‌اند واقعی بسازد و از آن دفاع کند: یک API با پایگاه داده، مهاجرت، احراز هویت، نقش‌ها، بارگذاری فایل، آزمون خودکار و یک کلاینت پایتونی. همه این‌ها در یک پروژه واحد اتفاق می‌افتد: API مدیریت آموزشگاه، که از فصل اول تا آخر قدم به قدم بزرگ می‌شود.

ساختار هر فصل

هر فصل از چهار قسمت تشکیل شده است:

  1. مسئله: این جلسه چه مشکلی را حل می‌کند و چرا به آن نیاز داریم.
  2. مثال‌ها: کد واقعی و قابل اجرا از پوشه همان جلسه، با توضیح.
  3. پروژه: قدمی که در این جلسه به پروژه آموزشگاه اضافه می‌شود.
  4. جمع‌بندی و تمرین: جدول خلاصه و چند تمرین عملی.
پیشنهاد

کد مثال‌ها را فقط نخوانید. آنها را اجرا کنید، در Bruno درخواست بفرستید، عمداً درخواست اشتباه بفرستید و پیام خطا را بخوانید، بعد کد را تغییر دهید و دوباره امتحان کنید. هفتاد درصد زمان این دوره به همین کار می‌گذرد.

چه چیزی لازم دارید

فهرست مطالب

۰ مقدمه: آماده‌سازی محیط کار بک‌اند چیست، پایتون و محیط مجازی، VS Code، Bruno، SQLite و PostgreSQL، اجرای اولین سرور ۱ مرور پایتون پیشرفته، HTTP و REST راهنمای نوع، Annotated، جنریک، dataclass، دکوراتور، استثنای سفارشی، مدیر زمینه، async، HTTP و REST، Bruno ۲ قدم‌های اول FastAPI برنامه و سرور، پارامتر مسیر و پرس‌وجو، بدنه درخواست، کد وضعیت، PUT و PATCH و DELETE، روترها، Swagger ۳ Pydantic: اعتبارسنجی و طرح‌واره‌ها BaseModel، Field و Annotated، اجباری و اختیاری، مدل تودرتو، اعتبارسنج سفارشی، سریال‌سازی، مدل پاسخ، Create و Update و Read ۴ تزریق وابستگی، ساختار، خطاها و تنظیمات Depends و Annotated، کلاس و سرویس به عنوان وابستگی، وابستگی yield، هدر و کوکی، مدیریت خطا، pydantic-settings، ساختار پروژه ۵ SQLAlchemy 2: موتور، نشست و مدل‌های تایپ‌دار پایگاه داده رابطه‌ای، engine و Session، DeclarativeBase و Mapped، درج و پرس‌وجو، قیدها و پیش‌فرض‌ها، نصب PostgreSQL روی ویندوز و اوبونتو، نشست برای هر درخواست ۶ CRUD واقعی با SQLAlchemy 2 select و where، scalar و scalars و execute، شمارش و گروه‌بندی، جست‌وجو، ویرایش و حذف، تراکنش، IntegrityError، چرخه عمر نشست ۷ رابطه‌ها و بارگذاری بهینه در SQLAlchemy کلید خارجی و relationship، یک‌به‌چند، چندبه‌چند با شیء واسط، مسئله N+1، selectinload و joinedload، cascade، تراکنش چندردیفی ۸ Alembic، صفحه‌بندی، فیلتر و مرتب‌سازی مهاجرت با Alembic، revision و upgrade و downgrade، صفحه‌بندی، جست‌وجو، فیلتر، مرتب‌سازی با فهرست سفید، Page جنریک ۹ احراز هویت و امنیت رمز عبور احراز هویت و مجوز، درهم‌سازی با Argon2، ثبت‌نام، فرم OAuth2، شناسایی کاربران، حمله زمانی، مهاجرت ستون رمز ۱۰ JWT، کاربر جاری و نقش‌ها ساختار JWT، امضا و جعل، انقضا، get_current_user، کارخانه require_roles، ۴۰۱ و ۴۰۳، قاعده مالکیت، OAuth2 scopes ۱۱ هدر، کوکی، فرم، فایل و CORS هدر و middleware، کوکی و پرچم‌هایش، فرم، UploadFile، بررسی نوع و بایت‌های جادویی و اندازه، فایل ایستا، CORS، انواع پاسخ ۱۲ FastAPI ناهمگام، SQLAlchemy ناهمگام و lifespan مسدودکننده در برابر ناهمگام، def و async def در FastAPI، gather در endpoint، AsyncSession، MissingGreenlet، lifespan، اشتباه‌های رایج ۱۳ آزمون خودکار API با pytest pytest، assert و parametrize و fixture، TestClient، dependency_overrides، آزمون ناهمگام، پایگاه داده آزمون، کارخانه‌ها، آزمون شکست ۱۴ ساختن یک کلاینت REST پایتونی با HTTPX کلاینت و سرور، requests و HTTPX، params و json و data، مهلت زمانی، خطای انتقال و خطای وضعیت، Bearer، کلاس کلاینت، MockTransport ۱۵ کلاینت ناهمگام، تلاش دوباره و یکپارچه‌سازی AsyncClient، gather و Semaphore، تلاش دوباره با عقب‌نشینی نمایی، نگاشت خطا و event hook، API شخص ثالث، fetch در مرورگر، برنامه داشبورد ۱۶ پروژه پایانی: یکپارچه‌سازی، رفع باگ، بازنویسی و بازبینی کد پروژه ناقص، پیدا کردن و رفع باگ، تکمیل endpointها، بازنویسی با GROUP BY، آزمون و کلاینت، پرسش‌های بازبینی کد
درباره پوشه‌های تمرین

در انتهای هر فصل به پوشه‌ای از فایل‌های دوره ارجاع داده شده است، مانند S07-sqlalchemy-relationships. اگر مخزن را دانلود کرده‌اید، بعد از خواندن هر بخش، نمونه مربوط به آن را باز کنید، اجرایش کنید و کدش را تغییر دهید.

شروع کتاب: فصل صفر