Backend ו-FastAPI מערך שיעור למרצה

מערך שיעור: מבוא ל-Backend ו-HTTP

משך: יום לימוד מלא — 6 שעות אקדמיות (270 דקות).

מטרת השיעור: הסטודנטים יבינו את תפקיד ה-Backend ואת שפת ה-HTTP, ויקימו מאפס שרת FastAPI שמקבל Path, Query ו-Body ומחזיר קודים נכונים.

בסוף השיעור הסטודנטים צריכים:

  1. לתכנן API: למפות פעולות CRUD ל-Methods, Paths וקודי סטטוס.
  2. להקים פרויקט FastAPI מאפס: venv, התקנה, app = FastAPI(), Route, uvicorn main:app --reload ו-/docs.
  3. לכתוב Endpoints עם Path Parameter, Query Parameters ו-Body (Pydantic), ולהחזיר 201/404/400, ולהבין את 422 האוטומטי.

דגש קריטי: ההקמה מאפס (הסילבוס מדגיש: איך מתקינים, איך יוצרים קובץ, איך מייבאים, איך יוצרים app, Route ראשון, הרצה). לוודא שכל סטודנט הריץ שרת לפני ההפסקה השנייה. תקלות venv ו-ExecutionPolicy ב-Windows הן החסם העיקרי.

לא בסקופ: אימות משתמשים, Middleware, async/await, Dependencies, תבניות HTML. אם נשאלים, “בהמשך המסלול”.


מהלך השיעור

חלק בשיעורמשךהערות ודגשים
מהו Backend + Client/Server/DB + API35 דק'אנלוגיית המסעדה. Client אמיתי ל-GitHub API. טבלת “OOP ↔ Web API”.
HTTP Methods ו-Status Codes40 דק'CRUD ↔ Methods על הלוח (נשארת כל השבוע). httpbin. “שופט קודים”.
Path / Query / Body25 דק'הפיצרייה. all_three.py מול httpbin.
הפסקה15 דק'
FastAPI מאפס55 דק'צעד אחר צעד, כל הכיתה יחד: venv → activate → install → main.py → uvicorn → דפדפן → /docs. עוזר הוראה עובר על תקלות.
הפסקה15 דק'
Params, Query, Body ב-FastAPI45 דק'students_memory.py. להפיק בכוונה 422 בכל אחד משלושת המקומות, ולקרוא את loc. סדר Routes.
תרגול + בדוק את עצמך40 דק'Movies API (Mini Project). מי שתקוע בהקמה, עם המרצה.

דגשים להעברת השיעור

  • לחבר לנושא מחשב, מערכת הפעלה ורשת: השרת עם socket (bind/listen/accept) מול FastAPI. “כל מה שכתבנו ביד, FastAPI עושה בשבילנו”.
  • לחבר לנושא OOP: app = FastAPI() הוא אובייקט. BaseModel הוא Class שיורשים ממנה. @app.get הוא מתודה. ה-API הוא “Public Interface” ברמת הרשת.
  • venv: להסביר למה לפני איך. לכתוב על הלוח את שלושת השלבים (create, activate, install) ולהדגיש “בכל Terminal חדש — activate”.
  • ExecutionPolicy: להכין מראש את הפקודה על המסך. היא תידרש לרוב סטודנטי Windows.
  • שני Terminals: אחד לשרת (תפוס), אחד ל-curl/ל-Git. לוודא שכולם יודעים לפצל.
  • 422 הוא חבר: להראות כמה מידע הוא נותן (loc, msg, input), ושהפונקציה לא רצה בכלל. להשוות לשרת המחשבון שקרס.
  • RAM: בסוף היום, להפעיל מחדש את השרת ולהראות שהסטודנט שנוצר נעלם. זה הגשר לנושא מסדי נתונים ו-MySQL.

מושגים

מושגהסבר קצר
Frontend / Backendתצוגה אצל המשתמש / לוגיקה ונתונים בשרת.
API / Web APIממשק לתוכנות אחרות / דרך HTTP ו-JSON.
EndpointMethod + Path.
Resourceהמשאב שה-API מנהל (students).
REST (מוסכמה)Path = שם עצם, Method = פעולה.
CRUDCreate/Read/Update/Delete ↔ POST/GET/PUT/DELETE.
Safe / Idempotentלא משנה נתונים (GET) / חזרה נותנת אותה תוצאה (PUT, DELETE).
Status Codes200, 201, 204, 400, 404, 409, 422, 500.
Path / Query / Bodyאיזה / סינון ואפשרויות / הנתונים.
URL Encodingקידוד תווים מיוחדים ב-URL.
curlClient של HTTP משורת הפקודה.
FastAPI / UvicornFramework ל-API / שרת ה-HTTP.
venv / pip / PyPIסביבה וירטואלית / מנהל חבילות / מאגר הספריות.
Decorator / Route@app.get(...) / קישור Endpoint לפונקציה.
Type Hintx: int. FastAPI משתמש בו להמרה ולולידציה.
Pydantic / BaseModelמודל נתונים עם טיפוסים ל-Body.
HTTPExceptionraise שהופך לתשובת שגיאה.
Swagger UI (/docs)תיעוד ובדיקה אוטומטיים.

תרגיל חשיבה

שאלת פתיחה (לפני FastAPI): “בנושא מחשב, מערכת הפעלה ורשת כתבנו שרת מחשבון עם socket. הוא קרס על ‘hello’, לא ידע HTTP, ולא החזיר JSON. בואו נרשום על הלוח: מה חסר לו כדי להיות שרת API אמיתי?”

מהלך:

  1. הכיתה מונה דרישות. צפוי: לפענח HTTP (Method, Path, Headers), להחזיר JSON, קודי סטטוס, לבדוק קלט, לטפל בהרבה בקשות, ותיעוד.
  2. המרצה כותב רשימה על הלוח: “כמה שורות קוד זה ידרוש?” (מאות).
  3. מקימים FastAPI (10 שורות). לעבור על הרשימה ולסמן ✓ על כל מה ש-FastAPI נתן: HTTP ✓, JSON ✓, 404 אוטומטי ✓, 422 על קלט שגוי ✓, תיעוד ב-/docs ✓.

מה המרצה מראה בסוף: את קוד ה-socket מנושא מחשב, מערכת הפעלה ורשת ליד students_memory.py, ואת הרשימה המסומנת. משפט סיום: “Framework טוב לוקח את מה שחוזר על עצמו בכל שרת, ומשאיר לכם רק את מה שייחודי לבעיה שלכם. אבל כדי להבין מה הוא עושה, היה שווה לכתוב פעם אחת שרת ביד.” ולסיים עם הטיזר: הפעלה מחדש, הסטודנט שנוצר נעלם. “מחר: Database.”