Quiz: Fondamentaux de FastAPI — 44 domande

Domande e risposte dettagliate

1. Quel type de logiciel FastAPI permet-il principalement de construire ?

Des systèmes d’exploitation à partir de scripts Python
Des applications mobiles natives sans serveur
Des bases de données relationnelles sans langage SQL
Des API à partir des annotations de type de Python

Des API à partir des annotations de type de Python

Spiegazione

FastAPI est un framework web moderne et performant destiné principalement à construire des API en s’appuyant sur les annotations de type standard de Python.

2. Quel rôle les annotations de type jouent-elles fortement dans FastAPI ?

Remplacer systématiquement les bases de données
Valider et convertir automatiquement les données
Installer automatiquement l’éditeur de code
Créer des pages HTML sans configuration

Valider et convertir automatiquement les données

Spiegazione

FastAPI exploite les annotations de type pour valider et convertir les données, générer la documentation des opérations et produire du code concis et performant.

3. Quelle comparaison décrit correctement Django et Flask ?

Django et Flask sont principalement conçus pour remplacer FastAPI dans les API REST
Django fournit surtout des extensions, tandis que Flask intègre de nombreuses fonctionnalités
Django est complet pour les sites web, tandis que Flask est un microframework minimal
Django est un microframework minimal, tandis que Flask est complet pour les sites web

Django est complet pour les sites web, tandis que Flask est un microframework minimal

Spiegazione

Django est un framework mature et complet principalement conçu pour les sites web, alors que Flask fournit peu de fonctionnalités sans extensions.

4. Quel est l’objectif principal du projet construit dans le cours ?

Créer une API REST pour une application d’autopartage
Développer un système d’exploitation pour véhicules connectés
Créer une page web statique présentant des voitures
Construire uniquement une base de données de trajets

Créer une API REST pour une application d’autopartage

Spiegazione

Le projet consiste à construire une API REST d’autopartage permettant notamment de créer, modifier et supprimer des voitures ainsi que d’ajouter des trajets.

5. Quels prérequis sont nécessaires pour suivre le cours ?

La connaissance exclusive du HTML et des feuilles de style
L’expérience professionnelle obligatoire en administration de bases de données
Les bases de Python, de HTTP, des API REST et des bases relationnelles
La maîtrise avancée du matériel réseau et des systèmes embarqués

Les bases de Python, de HTTP, des API REST et des bases relationnelles

Spiegazione

Le cours suppose notamment la connaissance des fonctions, classes, dictionnaires et listes en Python, ainsi que les notions essentielles de HTTP, des API REST et des bases relationnelles.

6. Quelle séquence correspond à la création d’un projet FastAPI ?

Créer une page HTML, installer un éditeur et supprimer l’environnement virtuel
Installer uniquement un éditeur de code, puis lancer directement une URL
Instancier FastAPI, puis créer une base de données sans installer de dépendances
Créer un environnement virtuel, installer les dépendances, créer un fichier Python et instancier FastAPI

Créer un environnement virtuel, installer les dépendances, créer un fichier Python et instancier FastAPI

Spiegazione

La création d’un projet comprend la mise en place d’un environnement virtuel, l’installation de FastAPI et de ses dépendances, la création d’un fichier Python et l’instanciation de l’application.

7. Quelle commande réalise l’installation complète de FastAPI avec ses dépendances supplémentaires ?

pip install "python[fastapi]"
python -m fastapi install all
python -m pip install fastapi-core
python -m pip install "fastapi[all]"

python -m pip install "fastapi[all]"

Spiegazione

La commande complète est `python -m pip install "fastapi[all]"`. La notation `[all]` demande l’installation des dépendances supplémentaires.

8. Que représente l’objet créé par l’appel au constructeur FastAPI ?

Un fichier de configuration de l’éditeur
Une table relationnelle destinée à stocker les utilisateurs
L’application ou le serveur REST du projet
Une seule réponse HTTP déjà envoyée au client

L’application ou le serveur REST du projet

Spiegazione

L’objet obtenu en appelant le constructeur FastAPI représente l’application, c’est-à-dire le serveur REST construit par le projet.

9. Qu’est-ce qu’une opération de chemin dans FastAPI ?

Une fonction associée à une URL et à une méthode HTTP par un décorateur
Une dépendance installée avec l’environnement virtuel
Un fichier Python chargé automatiquement par l’éditeur
Une table associée à une colonne par une contrainte SQL

Une fonction associée à une URL et à une méthode HTTP par un décorateur

Spiegazione

Une opération de chemin est une fonction reliée à une URL et à une méthode HTTP grâce à un décorateur tel que `@app.get`.

10. Quelle commande lance l’application FastAPI en développement tout en rechargeant automatiquement le code lors de ses modifications ?

python reload carsharing.py
uvicorn production carsharing.py
fastapi run carsharing.py
fastapi dev carsharing.py

fastapi dev carsharing.py

Spiegazione

La commande « fastapi dev carsharing.py » est conçue pour le développement et recharge automatiquement l’application lorsque le code change. « fastapi run » correspond plutôt à l’exécution en production.

11. Quelle commande est appropriée pour exécuter l’application FastAPI en production, notamment pour des raisons de sécurité et de performance ?

fastapi dev carsharing.py
fastapi test carsharing.py
fastapi run carsharing.py
fastapi reload carsharing.py

fastapi run carsharing.py

Spiegazione

En production, il faut utiliser « fastapi run carsharing.py ». Le mode « dev » est destiné au développement et à son rechargement automatique.

12. Quelle association entre les URL générées automatiquement par FastAPI et leur fonction est correcte ?

/docs lance le mode développement, /redoc lance la production et /openapi.json configure Uvicorn
/docs affiche les erreurs, /redoc fournit les données de l’application et /openapi.json recharge le serveur
/docs fournit la documentation interactive, /redoc une autre présentation et /openapi.json la spécification lisible par machine
/docs fournit la spécification machine, /redoc exécute les tests et /openapi.json affiche la documentation interactive

/docs fournit la documentation interactive, /redoc une autre présentation et /openapi.json la spécification lisible par machine

Spiegazione

FastAPI fournit la documentation interactive à « /docs », une présentation alternative à « /redoc » et la spécification OpenAPI lisible par machine à « /openapi.json ».

13. Quel enchaînement décrit correctement le traitement d’une requête HTTP par une application FastAPI ?

Le client exécute directement la fonction, puis Uvicorn génère la documentation correspondante
Uvicorn reçoit la requête, FastAPI associe le chemin et la méthode, exécute la fonction puis renvoie sa valeur
Uvicorn valide uniquement la réponse, tandis que FastAPI transmet la requête sans sélectionner d’opération
FastAPI reçoit la requête, Uvicorn choisit le chemin, puis le client exécute la fonction

Uvicorn reçoit la requête, FastAPI associe le chemin et la méthode, exécute la fonction puis renvoie sa valeur

Spiegazione

Uvicorn reçoit la requête, puis FastAPI recherche l’opération correspondant au chemin et à la méthode, exécute la fonction et renvoie sa valeur au client.

14. Dans l’URL « /?name=reindart », quelle partie constitue le paramètre de requête ?

Le chemin racine « / »
La valeur « reindart » uniquement
Le point d’interrogation
Le nom « name » associé à la valeur « reindart »

Le nom « name » associé à la valeur « reindart »

Spiegazione

Un paramètre de requête est transmis après le point d’interrogation sous la forme d’un nom et d’une valeur. Ici, « name » est le paramètre et « reindart » est sa valeur.

15. Dans le décorateur « /api/cars/{id} », comment faut-il caractériser « id » ?

Comme un paramètre de chemin intégré à l’URL
Comme un paramètre de requête placé après le point d’interrogation
Comme une annotation de type de la réponse
Comme une valeur réservée à la documentation OpenAPI

Comme un paramètre de chemin intégré à l’URL

Spiegazione

« id » est un paramètre de chemin, car il est intégré à l’URL entre accolades dans le décorateur de route.

16. Comment rendre optionnel un paramètre de requête FastAPI qui est obligatoire par défaut ?

En remplaçant sa route par un paramètre de chemin
En supprimant son nom du décorateur
En lui attribuant une valeur par défaut telle que None
En utilisant systématiquement le type int

En lui attribuant une valeur par défaut telle que None

Spiegazione

Les paramètres de requête sont obligatoires par défaut. Leur attribuer une valeur par défaut, comme « None », permet de les rendre optionnels.

17. Une route reçoit la valeur textuelle « 42 » pour un paramètre annoté int. Que fait FastAPI avec cette annotation ?

Il refuse toute valeur provenant d’une URL
Il convertit la valeur vers int et vérifie que cette conversion est valide
Il ignore l’annotation et conserve toujours la valeur comme chaîne
Il transforme automatiquement la valeur en booléen

Il convertit la valeur vers int et vérifie que cette conversion est valide

Spiegazione

FastAPI utilise les annotations de type pour convertir les valeurs textuelles reçues dans l’URL vers le type attendu et contrôler la validité de cette conversion. Les annotations ne sont donc pas ignorées par FastAPI à l’exécution.

18. Que permet de faire l’utilisation successive d’un point d’arrêt puis de « Step Over » dans un environnement comme PyCharm ou Visual Studio Code ?

Elle exécute toutes les lignes restantes sans nouvelle suspension
Elle suspend l’exécution pour inspecter les variables, puis avance d’une ligne à la fois
Elle transforme automatiquement les erreurs en réponses HTTP valides
Elle supprime les variables avant de relancer toute l’application

Elle suspend l’exécution pour inspecter les variables, puis avance d’une ligne à la fois

Spiegazione

Un point d’arrêt suspend l’exécution afin d’inspecter les variables. « Step Over » exécute ensuite une seule ligne avant de suspendre à nouveau.

19. Pourquoi une comparaison d’identifiants reçus dans l’URL avec des identifiants stockés dans les données automobiles peut-elle toujours échouer sans annotation int ?

Parce que FastAPI transforme les entiers stockés en chemins d’URL
Parce que les paramètres de chemin ne peuvent pas contenir de chiffres
Parce que les deux identifiants sont convertis en valeurs aléatoires
Parce que l’identifiant de l’URL est une chaîne tandis que celui des données est un entier

Parce que l’identifiant de l’URL est une chaîne tandis que celui des données est un entier

Spiegazione

Sans annotation « int », l’identifiant provenant de l’URL reste une chaîne, alors que les identifiants des données automobiles sont des entiers. La comparaison entre ces deux types peut donc être toujours fausse.

20. Quelle déclaration convient à une opération de chemin qui utilise une bibliothèque tierce dont les appels nécessitent `await` ?

Une fonction exécutée uniquement après la réponse
Une fonction déclarée avec `def`
Une fonction sans déclaration de type
Une fonction déclarée avec `async def`

Une fonction déclarée avec `async def`

Spiegazione

Lorsqu’une opération utilise des appels nécessitant `await`, elle doit être déclarée avec `async def` afin de pouvoir les exécuter correctement.

21. Quelle déclaration est généralement recommandée pour une opération qui utilise une bibliothèque de communication sans support asynchrone, comme SQLModel dans le cours ?

Une fonction sans paramètres
Une fonction exécutée dans le navigateur
Une fonction déclarée avec `def`
Une fonction déclarée avec `async def`

Une fonction déclarée avec `def`

Spiegazione

Une bibliothèque sans support asynchrone s’utilise généralement dans une fonction normale déclarée avec `def`, plutôt qu’avec `async def`.

22. Comment les premières données automobiles sont-elles représentées pour simuler une source de données ?

Par une chaîne contenant toutes les voitures
Par un dictionnaire contenant uniquement les identifiants
Par une liste de dictionnaires décrivant les voitures
Par une liste de fonctions représentant les voitures

Par une liste de dictionnaires décrivant les voitures

Spiegazione

Les données sont simulées par une liste de dictionnaires, chaque dictionnaire représentant une voiture et contenant notamment sa taille, son énergie, ses portes et sa transmission.

23. Que renvoie l’opération `GET /api/cars` lorsqu’aucun filtrage supplémentaire n’est demandé ?

Uniquement les voitures à quatre portes
La liste des tailles disponibles
La voiture correspondant à un identifiant précis
L’ensemble des voitures disponibles

L’ensemble des voitures disponibles

Spiegazione

L’opération `GET /api/cars` renvoie l’ensemble des voitures présentes dans la liste de données.

24. Une requête fournit uniquement une taille de voiture, puis une autre fournit une taille et un nombre de portes. Comment le filtrage est-il appliqué ?

Les deux critères sont obligatoires dans toutes les requêtes
Le filtrage est impossible lorsqu’un seul critère est fourni
Le nombre de portes est appliqué et la taille est ignorée
La taille est appliquée, puis le nombre de portes est ajouté si fourni

La taille est appliquée, puis le nombre de portes est ajouté si fourni

Spiegazione

Le filtrage commence avec toute la liste, applique la taille si elle est fournie, puis applique éventuellement le nombre de portes. Les deux filtres peuvent donc être utilisés séparément ou ensemble.

25. Pourquoi le paramètre correspondant au nombre de portes doit-il être annoté avec `int` lors d’une comparaison ?

Parce que FastAPI transforme tous les nombres en booléens
Parce que les valeurs extraites de l’URL sont textuelles
Parce que les dictionnaires ne contiennent pas de nombres
Parce que seules les chaînes peuvent être utilisées dans un filtre

Parce que les valeurs extraites de l’URL sont textuelles

Spiegazione

Les valeurs provenant d’une URL sont d’abord textuelles. Une annotation `int` permet leur conversion et une comparaison correcte avec le nombre de portes stocké.

26. Quelle affirmation distingue correctement un paramètre de requête d’un paramètre de chemin ?

Les deux paramètres sont obligatoirement écrits dans le chemin de l’URL
Un paramètre de requête peut devenir optionnel par défaut, tandis qu’un paramètre de chemin fait partie du motif de l’URL
Un paramètre de requête ne peut jamais recevoir de valeur par défaut
Un paramètre de chemin est toujours optionnel, tandis qu’un paramètre de requête est toujours obligatoire

Un paramètre de requête peut devenir optionnel par défaut, tandis qu’un paramètre de chemin fait partie du motif de l’URL

Spiegazione

Un paramètre de requête est généralement obligatoire mais peut être rendu optionnel par une valeur par défaut. Un paramètre de chemin reste obligatoire puisqu’il appartient au motif de l’URL.

27. Pour une requête vers `/api/cars/5`, comment FastAPI traite-t-il la valeur `5` ?

Il l’interprète comme le numéro de porte de la voiture
Il la recherche uniquement dans la partie requête de l’URL
Il la transmet toujours comme une chaîne sans validation
Il l’extrait du chemin, puis la convertit et la valide selon l’annotation de `id`

Il l’extrait du chemin, puis la convertit et la valide selon l’annotation de `id`

Spiegazione

FastAPI identifie le motif correspondant, extrait `5` du chemin et transmet cette valeur au paramètre `id` après conversion et validation selon son type.

28. Quel comportement faut-il adopter lorsqu’aucune voiture ne correspond à l’identifiant demandé ?

Lever une `HTTPException` avec le statut 404
Lever une `HTTPException` avec le statut 422
Ignorer l’identifiant et renvoyer toutes les voitures
Renvoyer automatiquement une voiture vide avec le statut 200

Lever une `HTTPException` avec le statut 404

Spiegazione

L’absence de la voiture demandée correspond à une ressource introuvable : l’opération doit donc lever une `HTTPException` avec le statut 404. Le statut 422 concerne plutôt une donnée d’entrée non valide.

29. Quelle caractéristique définit un modèle Pydantic valide ?

Une classe qui hérite de BaseModel et déclare les champs de la structure
Un dictionnaire dont les clés correspondent automatiquement aux noms des classes
Une fonction qui transforme uniquement des dictionnaires en chaînes JSON
Une classe qui impose exclusivement des valeurs numériques aux attributs

Une classe qui hérite de BaseModel et déclare les champs de la structure

Spiegazione

Un modèle Pydantic est une classe héritant de BaseModel, dont les attributs déclarent les champs, leurs types et leurs valeurs par défaut.

30. Lors de la construction d’un modèle Pydantic, que se passe-t-il pour un champ dépourvu de valeur par défaut ?

Il est ignoré lors de la validation
Il reçoit une chaîne vide par défaut
Il doit être fourni par l’appelant
Il devient automatiquement facultatif

Il doit être fourni par l’appelant

Spiegazione

Un champ sans valeur par défaut est obligatoire lors de la construction de l’objet. Une valeur par défaut le rend facultatif.

31. Un modèle Pydantic déclare un champ entier et reçoit la chaîne « 42 ». Quel comportement est attendu ?

Le champ est supprimé avant la création de l’objet
La chaîne est toujours conservée comme texte
La chaîne est convertie en entier si la conversion est possible
Une erreur est systématiquement produite avant toute conversion

La chaîne est convertie en entier si la conversion est possible

Spiegazione

Pydantic convertit automatiquement une valeur vers le type déclaré lorsqu’une conversion est possible, notamment une chaîne représentant un nombre vers un entier.

32. Quelle séquence décrit correctement le fonctionnement de `load_db` ?

Créer une URL pour chaque voiture, puis envoyer une requête POST à la collection
Lire uniquement le premier dictionnaire et le conserver sans validation
Ouvrir `cars.json`, utiliser `json.load`, puis valider chaque dictionnaire en objet Car
Ouvrir `cars.json` en écriture, convertir les voitures en dictionnaires, puis utiliser `json.dump`

Ouvrir `cars.json`, utiliser `json.load`, puis valider chaque dictionnaire en objet Car

Spiegazione

`load_db` lit `cars.json` avec `json.load`, obtient une liste de dictionnaires et transforme chaque élément en objet Car grâce à `Car.model_validate`.

33. Quelle opération permet à `save_db` de produire un fichier JSON lisible à partir d’objets Car ?

Écrire directement les objets Car dans le fichier sans conversion
Valider les dictionnaires avec `Car.model_validate` puis utiliser `json.load`
Charger le fichier avec `json.load` puis supprimer ses espaces d’indentation
Convertir les objets en dictionnaires puis utiliser `json.dump` avec `indent=4`

Convertir les objets en dictionnaires puis utiliser `json.dump` avec `indent=4`

Spiegazione

`save_db` convertit chaque objet en dictionnaire et écrit la liste avec `json.dump`; l’option `indent=4` améliore la lisibilité du fichier.

34. Quelle association entre les méthodes HTTP REST et leurs usages est correcte ?

GET crée, POST récupère, PUT supprime et DELETE modifie
GET modifie, POST supprime, PUT récupère et DELETE crée
GET récupère, POST crée, PUT modifie et DELETE supprime
GET valide, POST sérialise, PUT charge et DELETE sauvegarde

GET récupère, POST crée, PUT modifie et DELETE supprime

Spiegazione

GET sert à récupérer une ressource, POST à en créer une, PUT à modifier une ressource identifiée et DELETE à la supprimer.

35. Pour créer une voiture avec POST, quelle requête est appropriée ?

Envoyer les données dans le corps vers `/api/cars`, l’URL de la collection
Envoyer uniquement l’identifiant dans l’URL sans corps de requête
Envoyer les données dans le corps vers `/api/cars/12`, l’URL d’une voiture précise
Envoyer les données vers une URL de collection en utilisant la méthode GET

Envoyer les données dans le corps vers `/api/cars`, l’URL de la collection

Spiegazione

POST cible la collection `/api/cars` et transmet les données dans le corps; la ressource créée reçoit ensuite sa propre URL.

36. Quelle requête convient pour modifier la voiture dont l’identifiant est 12 ?

Un GET vers `/api/cars/12` avec les nouvelles données dans l’URL
Un DELETE vers `/api/cars` avec l’identifiant dans le corps
Un PUT vers `/api/cars/12` avec les nouvelles données dans le corps
Un POST vers `/api/cars` avec les nouvelles données dans le corps

Un PUT vers `/api/cars/12` avec les nouvelles données dans le corps

Spiegazione

Pour modifier une ressource précise, PUT utilise l’URL contenant son identifiant et transmet les nouvelles données dans le corps.

37. Quelle réponse convient généralement après la suppression réussie d’une voiture existante ?

Le statut 204 No Content avec un corps vide
Le statut 200 OK avec l’URL obligatoire d’une nouvelle ressource
Le statut 201 Created avec la voiture nouvellement créée
Le statut 404 Not Found avec un objet Car complet

Le statut 204 No Content avec un corps vide

Spiegazione

Une suppression réussie peut renvoyer 204 No Content et un corps vide. Une voiture inexistante entraîne plutôt une HTTPException de statut 404.

38. Quelle distinction décrit correctement les modèles d’entrée et de sortie d’une API ?

Le modèle d’entrée décrit les données envoyées par le client, tandis que le modèle de sortie décrit celles renvoyées par l’API.
Le modèle d’entrée définit les paramètres du chemin, tandis que le modèle de sortie définit les paramètres de requête.
Le modèle d’entrée décrit les données renvoyées par l’API, tandis que le modèle de sortie décrit celles envoyées par le client.
Les deux modèles décrivent uniquement les données enregistrées dans la base de données.

Le modèle d’entrée décrit les données envoyées par le client, tandis que le modèle de sortie décrit celles renvoyées par l’API.

Spiegazione

Le modèle d’entrée contrôle les données reçues du client, alors que le modèle de sortie contrôle les données retournées par l’API. Inverser ces rôles constitue une confusion fréquente.

39. Pourquoi CarOutput contient-il le champ `id` alors que CarInput ne le contient pas ?

CarOutput supprime l’identifiant reçu du client afin de rendre la voiture anonyme.
CarInput sert aux réponses, tandis que CarOutput sert uniquement à valider les paramètres du chemin.
CarInput représente une voiture fournie sans identifiant, tandis que CarOutput représente une voiture enregistrée avec son identifiant.
CarInput représente une voiture déjà enregistrée, tandis que CarOutput représente une voiture nouvellement créée sans identifiant.

CarInput représente une voiture fournie sans identifiant, tandis que CarOutput représente une voiture enregistrée avec son identifiant.

Spiegazione

CarOutput hérite de CarInput et lui ajoute `id`. Ainsi, CarInput correspond aux données fournies pour créer une voiture, tandis que CarOutput correspond à la voiture enregistrée.

40. Lors d’une requête POST de création d’une voiture, quelle séquence décrit correctement le traitement effectué par l’application ?

Le corps JSON est converti en CarInput, un nouvel identifiant est attribué, puis un CarOutput est enregistré et renvoyé.
Un CarOutput est recherché dans la base, puis ses propriétés sont remplacées par celles du corps JSON.
Le corps JSON est converti directement en CarOutput, puis l’identifiant fourni est supprimé avant l’enregistrement.
La requête est refusée car un identifiant doit obligatoirement être fourni dans le corps JSON.

Le corps JSON est converti en CarInput, un nouvel identifiant est attribué, puis un CarOutput est enregistré et renvoyé.

Spiegazione

FastAPI construit d’abord un CarInput à partir du corps JSON. L’application crée ensuite un CarOutput avec un nouvel identifiant, l’enregistre et le renvoie.

41. Que demande implicitement à FastAPI la déclaration d’un modèle Pydantic comme argument d’une opération ?

Générer automatiquement un identifiant et enregistrer l’objet dans la base de données.
Transformer systématiquement l’objet reçu en réponse HTTP de statut 204.
Lire l’objet dans le chemin de l’URL et ignorer sa validation avant l’appel de la fonction.
Lire l’objet dans le corps de la requête et en valider la structure avant l’appel de la fonction.

Lire l’objet dans le corps de la requête et en valider la structure avant l’appel de la fonction.

Spiegazione

Un modèle Pydantic utilisé comme argument indique à FastAPI de récupérer les données dans le corps de la requête et d’en vérifier la structure avant d’exécuter la fonction.

42. Quelle séquence correspond au traitement habituel d’une opération DELETE visant une voiture ?

Rechercher la voiture par identifiant, la supprimer si elle existe, sauvegarder les données et renvoyer généralement le statut 204.
Recevoir de nouvelles propriétés, les remplacer sans modifier l’identifiant et renvoyer la voiture mise à jour.
Rechercher la voiture, ajouter un trajet à sa liste, sauvegarder puis renvoyer le trajet créé.
Créer une nouvelle voiture à partir du corps, lui attribuer un identifiant et renvoyer le modèle créé.

Rechercher la voiture par identifiant, la supprimer si elle existe, sauvegarder les données et renvoyer généralement le statut 204.

Spiegazione

DELETE recherche la ressource par identifiant, la retire si elle existe, sauvegarde la base et renvoie généralement 204 sans contenu. La modification des propriétés relève plutôt de PUT.

43. Dans une opération PUT, comment sont utilisés l’identifiant et les nouvelles propriétés d’une voiture ?

L’identifiant vient du chemin et reste inchangé, tandis que les nouvelles propriétés viennent du corps et peuvent être modifiées.
L’identifiant vient du corps et peut être modifié, tandis que les propriétés viennent du chemin et restent inchangées.
L’identifiant et les propriétés viennent tous deux du corps, puis l’identifiant est régénéré lors de la sauvegarde.
L’identifiant et les propriétés viennent tous deux du chemin de l’URL.

L’identifiant vient du chemin et reste inchangé, tandis que les nouvelles propriétés viennent du corps et peuvent être modifiées.

Spiegazione

PUT reçoit l’identifiant dans le chemin et les nouvelles propriétés dans le corps. Il remplace les champs de la voiture trouvée sans modifier son identifiant, puis sauvegarde l’objet mis à jour.

44. Quelle structure Pydantic permet de représenter une voiture contenant plusieurs trajets dans une même donnée ?

Un modèle de voiture contenant une seule chaîne de caractères regroupant tous les trajets.
Deux modèles indépendants, sans champ permettant de relier la voiture à ses trajets.
Un modèle de voiture contenant une liste d’instances du modèle de trajet.
Un modèle de trajet contenant uniquement l’identifiant d’une voiture sans liste de trajets.

Un modèle de voiture contenant une liste d’instances du modèle de trajet.

Spiegazione

Un modèle Pydantic peut contenir une liste d’un autre modèle, par exemple une voiture avec une liste de trajets. FastAPI sérialise automatiquement cette structure imbriquée dans les requêtes et les réponses.

Ripassa con le flashcard

Memorizza le risposte con 73 flashcard su Fondamentaux de FastAPI.

Qu'est-ce que FastAPI ?

Un framework web moderne et performant pour construire des API avec les annotations de type Python.

Comment FastAPI utilise-t-il les annotations de type ?

Pour valider, convertir les données, générer la documentation et produire du code performant.

Quelle est la différence principale entre Django et Flask ?

Django est mature et complet, Flask est un microframework minimaliste.

Vedi le flashcard →

Studia la scheda di revisione

Leggi la scheda di revisione completa su Fondamentaux de FastAPI.

Vedi la scheda di revisione →

Similar courses

Crea i tuoi quiz

Importa il tuo corso e l'AI genera quiz con correzioni in 30 secondi.

Generatore di quiz