In molte situazioni, è consigliabile utilizzare codici di stato HTTP comuni per indicare l'esito positivo o negativo della richiesta API di un utente. Ad esempio, se un utente sta tentando di recuperare un'entità che non esiste, potresti inviare un codice di stato HTTP 404
per indicare che non esiste un'entità con l'ID entity_id
.
Puoi inviare questi codici di stato HTTP comuni generando un'eccezione fornita dalla libreria di endpoint, come indicato di seguito:
message = 'No entity with the id "%s" exists.' % entity_id
raise endpoints.NotFoundException(message)
Eccezioni fornite da Endpoints Frameworks
La libreria di endpoint fornisce le seguenti eccezioni, corrispondenti a codici di stato HTTP specifici:
Eccezione | Codice di stato HTTP corrispondente |
---|---|
endpoints.BadRequestException |
HTTP 400 |
endpoints.UnauthorizedException |
HTTP 401 |
endpoints.ForbiddenException |
HTTP 403 |
endpoints.NotFoundException |
HTTP 404 |
endpoints.InternalServerErrorException |
HTTP 500 |
Codici di stato HTTP supportati
Cloud Endpoints Frameworks supporta un sottoinsieme di codici di stato HTTP nelle risposte API. La tabella seguente descrive i codici supportati.
Codici di stato HTTP | Assistenza |
---|---|
HTTP 2xx | HTTP 200 viene generalmente utilizzato da Endpoints Frameworks se il metodo API restituisce correttamente.Se il tipo di risposta del metodo API è VoidMessage o il valore restituito del metodo API è None , viene impostato invece HTTP 204 . |
HTTP 3xx | I codici HTTP 3xx non sono supportati. L'utilizzo di qualsiasi codice HTTP 3xx genera una risposta HTTP 404 . |
HTTP 4xx | Sono supportati solo i seguenti codici HTTP 4xx:
404 , ad eccezione dei seguenti:
|
HTTP 5xx | Tutti i codici di stato HTTP 5xx vengono convertiti in HTTP 503 nella risposta del client. |
Creazione di classi di eccezioni personalizzate
Se vuoi creare altre classi di eccezione per altri codici di stato HTTP, puoi farlo
sottoclassando endpoints.ServiceException
. Lo snippet seguente mostra come creare una classe di eccezione che rappresenta un codice di stato HTTP 409:
import endpoints
import httplib
class ConflictException(endpoints.ServiceException):
"""Conflict exception that is mapped to a 409 response."""
http_status = httplib.CONFLICT