In vielen Situationen möchten Sie vielleicht gängige HTTP-Statuscodes verwenden, um einem Nutzer anzuzeigen, ob seine API-Anfrage erfolgreich war oder nicht. Wenn ein Nutzer beispielsweise versucht, eine nicht vorhandene Entität abzurufen, können Sie einen HTTP-404
-Statuscode senden, der angibt, dass keine Entität mit der ID entity_id
vorhanden ist.
Sie können gängige HTTP-Statuscodes senden. Dazu geben Sie eine von der Endpoints-Bibliothek bereitgestellte Ausnahme aus:
message = 'No entity with the id "%s" exists.' % entity_id
raise endpoints.NotFoundException(message)
Von Endpoints Frameworks bereitgestellte Ausnahmen
Die Endpoints-Bibliothek gibt die folgenden Ausnahmen aus. Diese entsprechen speziellen HTTP-Statuscodes:
Ausnahme | Zugehöriger HTTP-Statuscode |
---|---|
endpoints.BadRequestException |
HTTP 400 |
endpoints.UnauthorizedException |
HTTP 401 |
endpoints.ForbiddenException |
HTTP 403 |
endpoints.NotFoundException |
HTTP 404 |
endpoints.InternalServerErrorException |
HTTP 500 |
Unterstützte HTTP-Statuscodes
Cloud Endpoints Frameworks unterstützt in API-Antworten einen Teil der HTTP-Statuscodes. Die unterstützten Codes werden in der folgenden Tabelle beschrieben.
HTTP-Statuscodes | Unterstützung |
---|---|
HTTP 2xx | Endpoints Frameworks geht bei einer erfolgreichen Rückgabe der API-Methode normalerweise von HTTP 200 aus. Wenn der Antworttyp der API-Methode VoidMessage oder der Rückgabewert der API-Methode None ist, wird stattdessen HTTP 204 festgelegt. |
HTTP 3xx | HTTP 3xx-Codes werden nicht unterstützt. Bei der Verwendung von HTTP 3xx-Codes wird HTTP 404 zurückgegeben. |
HTTP 4xx | Es werden nur die folgenden HTTP 4xx-Codes unterstützt:
404 zurückgegeben. Dies gilt jedoch nicht für die folgenden Codes:
|
HTTP 5xx | Alle HTTP 5xx-Statuscodes werden in der Client-Antwort in HTTP 503 konvertiert. |
Eigene Ausnahmeklassen erstellen
Wenn Sie andere Ausnahmeklassen für andere HTTP-Statuscodes erstellen möchten, können Sie diese aus endpoints.ServiceException
ableiten. Das folgende Snippet zeigt, wie Sie eine Ausnahmeklasse erstellen, die den HTTP-Statuscode 409 repräsentiert:
import endpoints
import httplib
class ConflictException(endpoints.ServiceException):
"""Conflict exception that is mapped to a 409 response."""
http_status = httplib.CONFLICT