Lendo o FastAPI linha por linha
(rumbarum.oopy.io)- Vale a pena tentar rastrear a pilha com o PyCharm.
- Dá para verificar quais valores as variáveis usadas têm e, se forem instâncias, quais atributos possuem.
- Parece que o FastAPI não conseguiria existir sem o Starlette.
- A classe base também foi criada herdando de
Starlette, eRequest,Response,Router,Middlewareetc. também foram todos construídos com base no Starlette. - Você acaba lendo mais código do Starlette do que do FastAPI.
- Isso faz pensar que talvez também seja possível criar um app usando Starlette, sem o FastAPI.
- A classe base também foi criada herdando de
- Os papéis de Uvicorn ↔ Starlette ↔ FastAPI ficam mais claros.
- Uvicorn: interface de comunicação externa
- Starlette: interface de funcionamento interno do servidor
- 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.)
- Passei a entender um pouco melhor o middleware.
- Dá para ver que o processamento da
Requestacontece na ordemServerErrorMiddleware→ middlewares customizados →ExceptionMiddleware. - O handler registrado com
@app.exception_handler(Exception)é processado noExceptionMiddleware, e os demais erros de servidor são tratados noServerErrorMiddleware. - Para evitar bloqueio dos middlewares, um grupo separado de threads é executado novamente.
- Dá para ver que o processamento da
Ainda não há comentários.