Para sinalizar erros específicos em tarefas usando códigos 4xx e 5xx na sua API, siga estas orientações:
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")
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"}
)
X-Error-Code
) para códigos de erro internos, se necessário6.Resumo:
HTTPException
para 4xx e handlers globais para 5xx.https://stackoverflow.com/questions/24043019/when-should-an-api-throw-a-4xx-status-code-error-and-when-a-5xx ↩ ↩2
https://enterprisecraftsmanship.com/posts/rest-api-response-codes-400-vs-500/ ↩ ↩2 ↩3
https://en.wikipedia.org/wiki/List_of_HTTP_status_codes ↩
https://guptadeepak.com/comprehensive-guide-to-api-error-code-management/ ↩
https://betterstack.com/community/guides/scaling-python/error-handling-fastapi/ ↩ ↩2