fastapi-todo

Como usar códigos 4xx e 5xx para sinalizar erros específicos nas tarefas?

Para sinalizar erros específicos em tarefas usando códigos 4xx e 5xx na sua API, siga estas orientações:


Códigos 4xx — Erros do Cliente

Use códigos 4xx quando o erro foi causado por uma solicitação inválida do cliente. Exemplos comuns:

No FastAPI, use a exceção HTTPException para retornar esses erros:

from fastapi import HTTPException

# Exemplo: tarefa não encontrada
raise HTTPException(status_code=404, detail="Tarefa não encontrada")

Códigos 5xx — Erros do Servidor

Use códigos 5xx quando o erro ocorreu no servidor, mesmo que a solicitação do cliente estivesse correta:

No FastAPI, erros não tratados automaticamente resultam em 500. Para personalizar, crie um handler global:

from fastapi import Request
from fastapi.responses import JSONResponse

@app.exception_handler(Exception)
async def global_exception_handler(request: Request, exc: Exception):
    return JSONResponse(
        status_code=500,
        content={"message": "Erro interno do servidor"}
    )

Boas Práticas


Resumo:

  1. https://stackoverflow.com/questions/24043019/when-should-an-api-throw-a-4xx-status-code-error-and-when-a-5xx  2

  2. https://enterprisecraftsmanship.com/posts/rest-api-response-codes-400-vs-500/  2 3

  3. https://en.wikipedia.org/wiki/List_of_HTTP_status_codes 

  4. https://restcookbook.com/HTTP Methods/400-vs-500/  2

  5. https://guptadeepak.com/comprehensive-guide-to-api-error-code-management/ 

  6. https://betterstack.com/community/guides/scaling-python/error-handling-fastapi/  2