Lire FastAPI ligne par ligne
(rumbarum.oopy.io)- Ça vaut le coup d’essayer de suivre la trace de pile avec PyCharm.
- Cela permet de vérifier quelles valeurs ont les variables utilisées et, s’il s’agit d’instances, quels attributs elles possèdent.
- FastAPI semble difficilement pouvoir exister sans Starlette.
- Même la classe de base est construite en héritant de Starlette, et
Request,Response,Router,Middleware, etc. sont tous basés sur Starlette. - On finit par lire davantage de code de Starlette que de code de FastAPI.
- Cela donne l’impression qu’on pourrait aussi construire une application directement avec Starlette, sans FastAPI.
- Même la classe de base est construite en héritant de Starlette, et
- Les rôles de Uvicorn ↔ Starlette ↔ FastAPI deviennent plus clairs.
- Uvicorn : interface de communication externe
- Starlette : interface de fonctionnement interne du serveur
- FastAPI : ajoute par-dessus Starlette des facilités pour écrire les fonctions d’endpoint et interagir avec Uvicorn (
Depends(), validation des paramètres via Pydantic, etc.)
- J’ai mieux compris le middleware.
- On peut voir que le traitement des requêtes passe par
ServerErrorMiddleware→ middlewares personnalisés →ExceptionMiddleware. - Les handlers attachés avec
@app.exception_handler(Exception)sont traités dansExceptionMiddleware, tandis que les autres erreurs serveur sont prises en charge parServerErrorMiddleware. - Un groupe de threads distinct est relancé pour éviter que les middlewares ne bloquent.
- On peut voir que le traitement des requêtes passe par
Aucun commentaire pour le moment.