En muchas situaciones, puede que quieras usar códigos de estado HTTP comunes para indicar si la solicitud de API de un usuario se ha completado correctamente o no. Por ejemplo, si un usuario intenta recuperar una entidad que no existe, puede enviar un código de estado HTTP 404
para indicar que no existe ninguna entidad con el ID entity_id
.
Puedes enviar estos códigos de estado HTTP comunes generando una excepción proporcionada por la biblioteca de endpoints de la siguiente manera:
message = 'No entity with the id "%s" exists.' % entity_id
raise endpoints.NotFoundException(message)
Excepciones proporcionadas por Endpoints Frameworks
La biblioteca de endpoints proporciona las siguientes excepciones, que corresponden a códigos de estado HTTP específicos:
Excepción | Código de estado HTTP correspondiente |
---|---|
endpoints.BadRequestException |
HTTP 400 |
endpoints.UnauthorizedException |
HTTP 401 |
endpoints.ForbiddenException |
HTTP 403 |
endpoints.NotFoundException |
HTTP 404 |
endpoints.InternalServerErrorException |
HTTP 500 |
Códigos de estado HTTP admitidos
Cloud Endpoints Frameworks admite un subconjunto de códigos de estado HTTP en las respuestas de las APIs. En la siguiente tabla se describen los códigos admitidos.
Códigos de estado de HTTP | Asistencia |
---|---|
HTTP 2xx | Endpoints Frameworks suele asumir el código HTTP 200 si el método de la API se devuelve correctamente.Si el tipo de respuesta del método de la API es VoidMessage o el valor devuelto del método de la API es None , se asigna el código HTTP 204 . |
HTTP 3xx | No se admiten los códigos 3xx de HTTP. Si se usa cualquier código HTTP 3xx, se devuelve una respuesta HTTP 404 . |
HTTP 4xx | Solo se admiten los siguientes códigos HTTP 4xx:
404 , excepto los siguientes:
|
HTTP 5xx | Todos los códigos de estado HTTP 5xx se convierten en HTTP 503 en la respuesta del cliente. |
Crear tus propias clases de excepción
Si quieres crear otras clases de excepción para otros códigos de estado HTTP, puedes hacerlo creando una subclase de endpoints.ServiceException
. En el siguiente fragmento se muestra cómo crear una clase de excepción que representa un código de estado HTTP 409:
import endpoints
import httplib
class ConflictException(endpoints.ServiceException):
"""Conflict exception that is mapped to a 409 response."""
http_status = httplib.CONFLICT