מדריך FastAPI בעברית

FastAPI הוא מסגרת עבודה מודרנית לפיתוח יישומי אינטרנט בפייתון. היא מתמקדת בפיתוח מהיר, בניצולת טובה ובמודלים נתונים מודרניים.

התקנת FastAPI

בצעו את השלבים הבאים כדי להתקין את FastAPI במחשב שלכם:

דרישות מוקדמות

  1. ודאו שיש לכם Python 3.6 או גרסה חדשה יותר מותקנת.
  2. התקינו את pip (מנהל החבילות של Python).

יצירת סביבת עבודה וירטואלית (אופציונלי)

מומלץ ליצור סביבת עבודה וירטואלית כדי לבודד את תלויות הפרויקט של FastAPI:

python -m venv env
source env/bin/activate  # בWindows, השתמשו ב-`env\Scripts\activate`

התקנת FastAPI

הריצו את הפקודה הבאה כדי להתקין את FastAPI:

pip install fastapi

אימות ההתקנה

צרו קובץ Python חדש והוסיפו את הקוד הבא:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def root():
    return {"message": "שלום, עולם!"}

לאחר מכן, הריצו את היישום עם:

uvicorn main:app --reload

בקרו בכתובת http://localhost:8000 בדפדפן האינטרנט שלכם. אם תראו את התגובה JSON {"message": "שלום, עולם!"}, FastAPI הותקן כראוי.

צעדים הבאים

כעת, לאחר שהתקנתם את FastAPI, תוכלו להתחיל לבנות את יישום האינטרנט שלכם. עיינו בתיעוד הרשמי של FastAPI למידע נוסף ולמדריכים.

יצירת יישום בסיסי ב-FastAPI

ליצירת יישום בסיסי ב-FastAPI, עקבו אחר השלבים הבאים:

יצירת קובץ Python חדש

צרו קובץ Python חדש בשם main.py ופתחו אותו בעורך טקסט.

ייבוא ה-FastAPI

from fastapi import FastAPI

ייבאו את הספריה FastAPI כדי ליצור את היישום.

יצירת היישום

app = FastAPI()

יצרו אובייקט חדש של FastAPI ואחסנו אותו במשתנה app.

הוספת נתיב בסיסי

@app.get("/")
def root():
    return {"message": "שלום, עולם!"}

הוסיפו פונקציה הנקראת root עם הדקורטור @app.get("/"). פונקציה זו תחזיר תגובה JSON עם המסר "שלום, עולם!" כאשר הנתיב הבסיסי / מבוקש.

הרצת היישום

לאחר יצירת הקובץ main.py, הריצו את הפקודה הבאה בטרמינל:

uvicorn main:app --reload

זה יריץ את היישום שלכם בכתובת http://localhost:8000. בקרו בכתובת זו בדפדפן כדי לראות את התגובה "שלום, עולם!".

צעדים הבאים

עכשיו, כשיש לכם יישום בסיסי, תוכלו להוסיף נתיבים נוספים, לקבל קלט מהמשתמש, לטפל בבקשות POST, PUT ו-DELETE, ולבנות יישומים מורכבים יותר.

הרצת יישום FastAPI

ניתן להריץ את היישום באמצעות הפקודה:

uvicorn main:app --reload

הפקודה uvicorn היא שרת הפיתוח של FastAPI. היא מריצה את היישום שלך ומאזינה לבקשות HTTP.

הפרמטר main:app מצביע על המודול והיישום שלך. במקרה זה, היישום מוגדר במודול בשם main.py ונקרא app.

הפרמטר --reload גורם ל-uvicorn לטעון מחדש את היישום שלך כאשר אתה משנה את הקוד, כך שתוכל לראות את השינויים ללא צורך להפעיל מחדש את השרת ידנית.

כתובת היישום FastAPI

היישום יהיה זמין בכתובת:

http://localhost:8000

כברירת מחדל, FastAPI מאזין לבקשות HTTP בכתובת http://localhost:8000. ניתן לשנות את הכתובת והפורט באמצעות הפרמטרים של הפקודה uvicorn.

לדוגמה, כדי להריץ את היישום בכתובת http://127.0.0.1:5000, יש להריץ את הפקודה הבאה:

uvicorn main:app --host 127.0.0.1 --port 5000

הפרמטר --host מציין את הכתובת IP שהשרת יאזין אליה, ו---port מציין את הפורט שהשרת יאזין אליו.

ניתן גם להריץ את היישום בכתובת IP ציבורית, כך שיהיה נגיש מכל כתובת IP. לדוגמה:

uvicorn main:app --host 0.0.0.0 --port 8080

הפקודה הזו תריץ את היישום בכתובת http://your_public_ip:8080, כאשר your_public_ip היא הכתובת הציבורית של המחשב שלך.

שים לב: הרצת יישום באופן ציבורי עלולה לחשוף את המחשב שלך לסיכונים אבטחה. לכן, מומלץ להשתמש בשרת ייעודי או בשירותי ענן לצורכי הפצה.

Swagger UI

FastAPI מספק ממשק משתמש אינטראקטיבי להתרעננות בעזרת Swagger UI. ניתן לגשת אליו בכתובת:

http://localhost:8000/docs

Swagger UI מאפשר לך לראות את המסמכים של API שלך, לנסות את הניתובים השונים, ולהציג דוגמאות לבקשות ולתגובות.

FastAPI עם PostgreSQL ו-SQLAlchemy

הגדרת SQLAlchemy


מ-'sqlalchemy' מייצאים את 'create_engine', 'declarative_base', ו-'sessionmaker'

שלב זה מגדיר את החיבור לבסיס הנתונים על ידי יצירת 'engine'.
SessionLocal הוא מנהל הסשן שישמש ליצירת סשן חדש עבור כל בקשה.

'Base' הוא מחלקה אבסטרקטית מהחבילה 'declarative_base' שמאפשרת לנו להגדיר מודלים.

הגדרת מודלים


מ-'sqlalchemy' מייצאים את 'Column', 'Integer', 'String', 'Float', ו-'Boolean'

המודל 'Item' מייצג רשומה בטבלת 'items' בבסיס הנתונים.

יצירת טבלה (אופציונלי)


פקודה זו יוצרת את כל הטבלאות בבסיס הנתונים על ידי המיפוי של מודלים לטבלאות.

שימוש ב-Sessions


מ-'sqlalchemy.orm' מייצאים את 'Session'

פונקציה זו מקבלת סשן חדש ומחזירה אותו.
בסיום השימוש בסשן, הוא ייסגר וישוחרר מהזיכרון.

CRUD פונקציות


מ-'sqlalchemy.orm' מייצאים את 'Session'

פונקציות אלו מבצעות פעולות יצירה, קריאה, עדכון ומחיקה על אובייקטים בבסיס הנתונים.

- create_item: מקבלת סשן ופריט חדש ומוסיפה את הפריט לבסיס הנתונים.
- get_item: מקבלת סשן ומזהה פריט, ומחזירה את הפריט המתאים מבסיס הנתונים, אם הוא קיים, או None אחרת.
- update_item: מקבלת סשן, מזהה פריט ופריט מעודכן, ומעדכנת את הפריט המתאים בבסיס הנתונים.
- delete_item: מקבלת סשן ומזהה פריט, ומוחקת את הפריט מבסיס הנתונים.

תרגולים מורכבים עם FastAPI, ORM ו-PgSQL

תרגיל 1: מערכת ניהול משתמשים

צור מערכת FastAPI לניהול משתמשים הכוללת יצירה, עדכון, קריאה ומחיקה של משתמשים.

תרגיל 2: מערכת פורום

צור מערכת FastAPI לניהול פורום הכוללת יצירה, עדכון, קריאה ומחיקה של פוסטים ותגובות.

תרגיל 3: מערכת משימות

צור מערכת FastAPI לניהול משימות הכוללת יצירה, עדכון, קריאה ומחיקה של משימות.

תרגיל 4: מערכת חנות מקוונת

צור מערכת FastAPI לניהול חנות מקוונת הכוללת יצירה, עדכון, קריאה ומחיקה של מוצרים והזמנות.

תרגיל 5: מערכת בנקאות

צור מערכת FastAPI לניהול בנקאות הכוללת יצירה, עדכון, קריאה ומחיקה של חשבונות בנק ופעולות פיננסיות.

אתה יכול להשתמש בתרגילים אלו כדי להתאמן עם FastAPI, ORM ו-PgSQL בצורה מורכבת יותר.