Tratando erros

Introdução ao FastAPI

Matt Eckerle

Software and Data Leader

Dois principais motivos para tratar erros

Erro do usuário

  • URI inválido ou desatualizado
  • Entrada ausente ou incorreta
@app.delete("/items")
def delete_item(item: Item):
    if item.id not in item_ids:
        # Return an error
    else:
        crud.delete_item(item)
        return {}

Erro do servidor

  • Aconteceu outra coisa
@app.delete("/items")
def delete_item(item: Item):
    try:
        crud.delete_item(item)
    except Exception:
        # Return an error
    return {}
Introdução ao FastAPI

Códigos de status HTTP: "níveis de bronca"

  • Permite que a API informe o status na resposta
    • Sucesso, falha, erro etc.
  • Códigos específicos definidos no protocolo HTTP
  • Faixa: 100 - 599
  • Categorizar pelo primeiro número (1 -5)
  1. Respostas informativas (100 - 199)
  2. Respostas de sucesso (200 - 299)
  3. Mensagens de redirecionamento (300 - 399)
  4. Respostas de erro do cliente (400 - 499)
  5. Respostas de erro do servidor (500 - 599)
1 https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
Introdução ao FastAPI

Códigos de status HTTP comuns

Sucesso (200 - 299)

  • 200 OK
    • Resposta padrão de sucesso
  • 201 Created
    • Específico para POST
  • 202 Accepted
    • Não compromissivo. "Estamos trabalhando nisso"
  • 204 No Content
    • Sucesso! Nada mais a declarar

Outras respostas

  • 301 Moved Permantently
    • URI alterado permanentemente
  • 400 Bad Request
    • Erro do cliente
  • 404 Not Found
    • O servidor não encontrou o recurso solicitado
  • 500 Internal Server Error
    • O servidor encontrou uma situação que não sabe lidar
Introdução ao FastAPI

Tratando erros com códigos de status

from fastapi import FastAPI, HTTPException

app = FastAPI()

@app.delete("/items")
def delete_item(item: Item):
    if item.id not in item_ids:
        # Send response with status 404 and specific error message
        raise HTTPException(status_code=404, detail="Item not found.")
    else:
        delete_item_in_database(item)
        return {}
Introdução ao FastAPI

Vamos praticar!

Introdução ao FastAPI

Preparing Video For Download...