חריגים וקודי סטטוס של HTTP

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

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

message = 'No entity with the id "%s" exists.' % entity_id
raise endpoints.NotFoundException(message)

חריגים שסופקו על ידי Endpoints Frameworks

ספריית נקודות הקצה מספקת את החריגים הבאים, שמתאימים לקודי סטטוס ספציפיים של HTTP:

חריג קוד סטטוס של HTTP מתאים
endpoints.BadRequestException HTTP 400
endpoints.UnauthorizedException HTTP 401
endpoints.ForbiddenException HTTP 403
endpoints.NotFoundException HTTP 404
endpoints.InternalServerErrorException HTTP 500

קודי סטטוס נתמכים של HTTP

‫Cloud Endpoints Frameworks תומך בקבוצת משנה של קודי סטטוס HTTP בתשובות של API. בטבלה הבאה מתוארים הקודים הנתמכים.

קודי סטטוס של HTTP תמיכה
HTTP 2xx בדרך כלל, אם ה-method של ה-API מחזיר ערך בהצלחה, ה-Frameworks של Endpoints מניח שקוד הסטטוס הוא HTTP 200.
אם סוג התגובה של ה-method של ה-API הוא VoidMessage או שערך ההחזרה של ה-method של ה-API הוא None, קוד הסטטוס שמוגדר הוא HTTP 204.
HTTP 3xx אין תמיכה בקודים מסוג HTTP 3xx. שימוש בכל קודי HTTP 3xx מוביל לתגובת HTTP 404.
HTTP 4xx רק קודי ה-HTTP 4xx הבאים נתמכים:
  • 400
  • 401
  • 403
  • 404
  • 409
  • 410
  • 412
  • 413
כל קודי ה-HTTP 4xx האחרים מוחזרים כשגיאה 404, למעט הקודים הבאים:
  • הערך 405 מוחזר כ-501
  • הערך 408 מוחזר כ-503
HTTP 5xx כל קודי הסטטוס 5xx של HTTP מומרים ל-HTTP 503 בתגובת הלקוח.

יצירת מחלקות חריגות משלכם

אם רוצים ליצור עוד מחלקות חריגים לקודי סטטוס אחרים של HTTP, אפשר לעשות זאת באמצעות יצירת מחלקת משנה של endpoints.ServiceException. בקטע הקוד הבא אפשר לראות איך יוצרים מחלקת חריגה שמייצגת קוד מצב HTTP 409:

import endpoints
import httplib

class ConflictException(endpoints.ServiceException):
  """Conflict exception that is mapped to a 409 response."""
  http_status = httplib.CONFLICT