Python supporte des annotations de type (ou type hints) optionnelles.
Ces annotations de type constituent une syntaxe spéciale qui permet de déclarer le type d'une variable.
En déclarant les types de vos variables, cela permet aux différents outils comme les éditeurs de texte d'offrir un meilleur support.
Ce chapitre n'est qu'un tutoriel rapide / rappel sur les annotations de type Python.
Seulement le minimum nécessaire pour les utiliser avec FastAPI sera couvert... ce qui est en réalité très peu.
FastAPI est totalement basé sur ces annotations de type, qui lui donnent de nombreux avantages.
Mais même si vous n'utilisez pas ou n'utiliserez jamais FastAPI, vous pourriez bénéficier d'apprendre quelques choses sur ces dernières.
Note
Si vous êtes un expert Python, et que vous savez déjà tout sur les annotations de type, passez au chapitre suivant.
Il existe certaines structures de données qui contiennent d'autres valeurs, comme dict, list, set et tuple. Et les valeurs internes peuvent elles aussi avoir leurs propres types.
Pour déclarer ces types et les types internes, on utilise le module standard de Python typing.
Il existe spécialement pour supporter ces annotations de types.
Vous pouvez aussi utiliser Optional pour déclarer qu'une variable a un type, comme str mais qu'il est "optionnel" signifiant qu'il pourrait aussi être None.
Utiliser Optional[str] plutôt que str permettra à l'éditeur de vous aider à détecter les erreurs où vous supposeriez qu'une valeur est toujours de type str, alors qu'elle pourrait aussi être None.
Pydantic est une bibliothèque Python pour effectuer de la validation de données.
Vous déclarez la forme de la donnée avec des classes et des attributs.
Chaque attribut possède un type.
Puis vous créez une instance de cette classe avec certaines valeurs et Pydantic validera les valeurs, les convertira dans le type adéquat (si c'est nécessaire et possible) et vous donnera un objet avec toute la donnée.
Ainsi, votre éditeur vous offrira un support adapté pour l'objet résultant.
Extrait de la documentation officielle de Pydantic :
FastAPI utilise ces annotations pour faire différentes choses.
Avec FastAPI, vous déclarez des paramètres grâce aux annotations de types et vous obtenez :
du support de l'éditeur
de la vérification de types
...et FastAPI utilise ces mêmes déclarations pour :
Définir les prérequis : depuis les paramètres de chemins des requêtes, les entêtes, les corps, les dépendances, etc.
Convertir des données : depuis la requête vers les types requis.
Valider des données : venant de chaque requête :
Générant automatiquement des erreurs renvoyées au client quand la donnée est invalide.
Documenter l'API avec OpenAPI :
ce qui ensuite utilisé par les interfaces utilisateur automatiques de documentation interactive.
Tout cela peut paraître bien abstrait, mais ne vous inquiétez pas, vous verrez tout ça en pratique dans Tutoriel - Guide utilisateur.
Ce qu'il faut retenir c'est qu'en utilisant les types standard de Python, à un seul endroit (plutôt que d'ajouter plus de classes, de décorateurs, etc.), FastAPI fera une grande partie du travail pour vous.
Info
Si vous avez déjà lu le tutoriel et êtes revenus ici pour voir plus sur les types, une bonne ressource est la "cheat sheet" de mypy.