ארכיטקטורה
תכנון REST API: גרסאות, תיעוד וחוויית מפתח
עקרונות REST, קודי סטטוס, גרסאות, אימות, rate limiting ו-OpenAPI.
API הוא חוזה עם הזמן: אתם עצמכם בעתיד, צוותי שותפים ומפתחים חיצוניים יסמכו על ההחלטות שאתם מקודדים היום. השקיעו בצפייה — שמות עקביים, צורת שגיאה, גרסאות ודוגמאות נגישות.
עצבו משאבים סביב שמות עצם והביעו את סמנטיקת HTTP במודע. הימנעו מ-RPC בנתיב; מיפו פעולות לשיטות. אספו קולקציות ברבים, מזהים יציבים והרחבות query רק כשהן מפחיתות round-trip בלי לשבור מטמון.
קודי סטטוס משדרים תוצאה; שימוש לרעה שוחק אמון לקוח. שמרו 5xx לכשלון שרת שתדווחו עליו, 4xx לבעיות מתוקנות ע"י הקורא עם גוף מנחה. כללו קודי שגיאה מכונה יציב לצד טקסט אנושי.
גרסאות הן אסטרטגיית תאימות, לא קישוט בנתיב. קידומות URL פשוטות; משא ומתן בכותרות מתאים ללקוחות היפרמדיה. בכל מקרה פרסמו לוח שקיעה, כותרות deprecation ומדריכי מיגרציה לפני מחיקת שדות.
דפדוף, סינון ומיון זקוקים לדפוסים אחידים — דפדוף מבוסס-cursor לזרמים גדולים, ברירות מחדל מפורשות לגבולות ותקרות כדי להגן על DB. תעדו גודל דף מרבי ושדות מיון מותרים כדי למנוע סריקות טבלה מקריות.
אימות צריך לעקוב אחר דפוסים מקובלים: OAuth2/OIDC להאצלת משתמשים, mTLS או בקשות חתומות בין שירותים, ומפתחות API רק כשיש רוטציה וניטור. אל תשימו סודות ב-query string.
הגבלת קצב והקצאות מגנות על תשתית משותפת. החזירו 429 פעיל עם רמז retry; הבדילו בין פרצי burst לקצבים מתמשכים; שקלו הוגנות בין דיירים במוצר multi-tenant.
מפתחות אידמפוטנטיות מצילים retries ב-POST — במיוחד תשלומים והקצאות. תעדו כמה זמן המפתח נזכר ומהו היקף הדה-דופליקציה.
OpenAPI או GraphQL שייכים ל-CI לצד הקוד. שינויים שוברים אמורים לכשל בבנייה או לדרוש אישור מפורש עם סקירה.
חוויית מפתח מאיצה אימוץ: quickstart, אוספי Postman או דוגמאות הרצה, דיירים בסביבת ארגז חול, וchangelog ניתן לחיפוש המקושר לעליית גרסה.
דאגות תפעוליות שייכות לתיעוד: p95 השהיה מצופה, שכבות הגבלת קצב, אלגוריתם חתימה ל-webhooks וקישור לעמוד סטטוס אירועים.
לסיכום: API מעולה הוא דעתני, מתועד, מגובה גרסה באמפתיה ונצפה בפרודקשן. הוא מפחית מס אינטגרציה והופך לפלטפורמה שבונים עליה במקום נגדה.