Em muitas situações, pode querer usar códigos de estado HTTP comuns para indicar o êxito ou a falha de um pedido de API de um utilizador. Por exemplo, se um utilizador estiver a tentar obter uma entidade que não existe, é recomendável enviar um código de estado HTTP 404
a indicar que não existe nenhuma entidade com o ID entity_id
.
Pode enviar esses códigos de estado HTTP comuns gerando uma exceção fornecida pela biblioteca de pontos finais da seguinte forma:
message = 'No entity with the id "%s" exists.' % entity_id
raise endpoints.NotFoundException(message)
Exceções fornecidas pelos frameworks de pontos finais
A biblioteca de pontos finais fornece as seguintes exceções, correspondentes a códigos de estado HTTP específicos:
Exceção | Código de estado HTTP correspondente |
---|---|
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 suportados
Os frameworks do Cloud Endpoints suportam um subconjunto de códigos de estado HTTP nas respostas da API. A tabela seguinte descreve os códigos suportados.
Códigos de estado HTTP | Apoio técnico |
---|---|
HTTP 2xx | Normalmente, o HTTP 200 é assumido pelos Endpoints Frameworks se o método da API for devolvido com êxito.Se o tipo de resposta do método da API for VoidMessage ou o valor de retorno do método da API for None , é definido o HTTP 204 . |
HTTP 3xx | Os códigos HTTP 3xx não são suportados. A utilização de códigos HTTP 3xx resulta numa resposta HTTP 404 . |
HTTP 4xx | Apenas são suportados os seguintes códigos HTTP 4xx:
404 , exceto os seguintes:
|
HTTP 5xx | Todos os códigos de estado HTTP 5xx são convertidos em HTTP 503 na resposta do cliente. |
Criar as suas próprias classes de exceções
Se quiser criar outras classes de exceções para outros códigos de estado HTTP, pode fazê-lo criando subclasses de endpoints.ServiceException
. O fragmento seguinte
mostra como criar uma classe de exceção que representa um 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