22 pontos por rumbarum 2023-08-21 | Ainda não há comentários. | Compartilhar no WhatsApp
  1. Vale a pena tentar rastrear a pilha com o PyCharm.
    1. Dá para verificar quais valores as variáveis usadas têm e, se forem instâncias, quais atributos possuem.
  2. Parece que o FastAPI não conseguiria existir sem o Starlette.
    1. A classe base também foi criada herdando de Starlette, e Request, Response, Router, Middleware etc. também foram todos construídos com base no Starlette.
    2. Você acaba lendo mais código do Starlette do que do FastAPI.
    3. Isso faz pensar que talvez também seja possível criar um app usando Starlette, sem o FastAPI.
  3. Os papéis de Uvicorn ↔ Starlette ↔ FastAPI ficam mais claros.
    1. Uvicorn: interface de comunicação externa
    2. Starlette: interface de funcionamento interno do servidor
    3. FastAPI: interage com o Uvicorn acrescentando, sobre o Starlette, conveniências para escrever funções de endpoint (Depends(), validação de parâmetros via Pydantic etc.)
  4. Passei a entender um pouco melhor o middleware.
    1. Dá para ver que o processamento da Request acontece na ordem ServerErrorMiddleware → middlewares customizados → ExceptionMiddleware.
    2. O handler registrado com @app.exception_handler(Exception) é processado no ExceptionMiddleware, e os demais erros de servidor são tratados no ServerErrorMiddleware.
    3. Para evitar bloqueio dos middlewares, um grupo separado de threads é executado novamente.

Ainda não há comentários.

Ainda não há comentários.