כתיבת קוד — שיעור 18
Fetch ו-APIs: חיבור React ל-Backend
כל 2 משימות הקוד שנשמרו מהשיעור מופיעות כאן, עם דרישות, דוגמאות וקוד פתיחה. אפשר לכתוב פתרון בעורך המקומי וללחוץ על „בדיקת AI” לקבלת ציון, רמזים והערות.
T2 · בסיסי200 נק'~15 דק'algorithmic
ניווט בטוח בתגובת API (JSON path)
תגובות API הן JSON מקונן; לעיתים שדות חסרים. ממש get_path(data, path, default=None) שמנווט לפי נתיב מופרד-בנקודות (מפתחות במילונים, אינדקסים ברשימות — כולל שליליים). אם צעד כלשהו נכשל (מפתח חסר / אינדקס מחוץ לתחום / טיפוס לא-מתאים) — החזר את default במקום לקרוס.
דוגמאות
get_path(D, 'user.addresses.0.city') # D=API response → 'TLV'
get_path(D, 'user.addresses.9.city') → None
get_path({}, 'x', 'NA') → 'NA'
הפתרון נשמר מקומית אוטומטית.
T3 · בינוני400 נק'~30 דק'algorithmic
Rate Limiter — דלי אסימונים (Token Bucket)
הגן על API מפני הצפה עם מגביל-קצב 'דלי אסימונים'. הדלי מתחיל מלא (capacity אסימונים) ומתמלא ב-refill אסימונים לשנייה (חסום ל-capacity). נתונה רשימת חותמות-זמן requests (לא יורדת, בשניות). עבור כל בקשה: מלא לפי הזמן שחלף, ואז אם יש ≥1 אסימון — צרוך אחד ואשר (True); אחרת דחה (False). החזר רשימת bool באורך הבקשות.
דוגמאות
rate_limit([0,0,0], 2, 1) → [True, True, False]
rate_limit([0,1,2], 1, 1) → [True, True, True]
הפתרון נשמר מקומית אוטומטית.