שגיאות API: פעולה ברורה בלי חשיפת סודות

בקצרה

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

מסדרון שרתים ורשתות מאובטח ללא אנשים
במאמר זה

הפרדת מצב, סוג ומקרה

RFC 9457 מגדיר application/problem+json. השתמשו בסוג בעיה יציב ובפירוט מובן למקרה; לקוח לא צריך לנתח משפט מתורגם כדי להחליט. שדה status, אם קיים, חייב להתאים למצב HTTP בפועל.

מצבמשמעות HTTPטיפול אפשרי
400בקשה שגויהתיקון לפני ניסיון נוסף.
401חסרים פרטי אימות תקפיםבדיקת הפרטים והמנגנון המתועד.
403הבקשה הובנה אך נדחתהבדיקת זכויות; חזרה אינה מעניקה אותן.
503השירות אינו זמין זמניתהמתנה וניסיונות מוגבלים אם הפעולה מאפשרת.

מסלולי כשל צפויים

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

לנסות שוב רק כשמתאים

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

מקורות ראשוניים

שגיאות API צריכות להנחות פעולה ללא דליפה.

סטטוס HTTP מספק קטגוריה ראשונית, אך לקוח עשוי להזדקק לסוג יציב ופרטים שימושיים. RFC 9457 מתאר מבנה בעיה נפוץ; הוא אינו מצדיק חשיפת עקבות פנימיות או נתונים רגישים.

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

מקור ראשוני: IETF RFC 9457 — Problem Details for HTTP APIs. שיטה קשורה: קריאת המדריך המעשי.

ניסיונות API: לספור את מלוא תקציב הזמן

הגדירו גבול קריאות ומועד כולל.

מקרה לימודי בדוי: הנתונים אינם מתארים את CIE או לקוחות.

מודל בדוי: ארבע קריאות עד 250 מילישניות והמתנות 100, 200, 400. אינו כולל jitter, חיבור, תורים ובדיקה מקומית.

כל הניסיונות
41 + 3
סך המתנות (ms)
700100 + 200 + 400
תקציב המודל (ms)
17004 × 250 + 700
פירוק הרצף
שלבקריאה מרבית (ms)המתנה הבאה (ms)
ניסיון 1250100
ניסיון 2250200
ניסיון 3250400
ניסיון 42500
סך הכול1000700
זמני המודל (ms)
  • זמן קריאות1,000
  • המתנות מצטברות700
  • מועד כולל (ms)1,500

בדיקות לפני מסקנה

  1. 1,000 + 700 = 1,700 חורג ממועד של 1,500 מילישניות.
  2. העבירו מועד כולל ומנעו השפעות כפולות; timeout אינו מוכיח ביטול מרוחק.

נסו תקציב ניסיונות

n × T + W × (2^(n−1) − 1)

שיטה קשורה: קריאת המדריך המעשי.

שגיאות API: סוגים, סטטוסים וראיות

הערות המקורות המפורטות זמינות באנגלית במהדורה זו.

Handle an error without parsing its sentence

An API client may receive a translated title, missing member or unfamiliar extension. Preserve decisions based on the documented type and HTTP status, then connect a safe action to the context.

  • Compare received status and JSON status without silently replacing either.
  • Test absent type, string status instead of a number, and an unknown extension.
  • Separate person-facing text, business code and occurrence reference.

Explore problem types and eight fictional responses →

IETF · M. Nottingham, E. Wilde, S. Dalal · RFC 9457 · July 2023 · obsoletes RFC 7807 · §3.1, §3.2, §4.2, §5