]> git.ipfire.org Git - thirdparty/fastapi/fastapi.git/commitdiff
🌐 Add French translation for `docs/tutorial/body.md` (#3671)
authorSam Courtemanche <smlep.pro@gmail.com>
Tue, 5 Oct 2021 12:30:41 +0000 (14:30 +0200)
committerGitHub <noreply@github.com>
Tue, 5 Oct 2021 12:30:41 +0000 (12:30 +0000)
Co-authored-by: SebastiĂĄn RamĂ­rez <tiangolo@gmail.com>
docs/fr/docs/tutorial/body.md [new file with mode: 0644]
docs/fr/mkdocs.yml

diff --git a/docs/fr/docs/tutorial/body.md b/docs/fr/docs/tutorial/body.md
new file mode 100644 (file)
index 0000000..c0953f4
--- /dev/null
@@ -0,0 +1,165 @@
+# Corps de la requĂȘte
+
+Quand vous avez besoin d'envoyer de la donnĂ©e depuis un client (comme un navigateur) vers votre API, vous l'envoyez en tant que **corps de requĂȘte**.
+
+Le corps d'une **requĂȘte** est de la donnĂ©e envoyĂ©e par le client Ă  votre API. Le corps d'une **rĂ©ponse** est la donnĂ©e envoyĂ©e par votre API au client.
+
+Votre API aura presque toujours Ă  envoyer un corps de **rĂ©ponse**. Mais un client n'a pas toujours Ă  envoyer un corps de **requĂȘte**.
+
+Pour dĂ©clarer un corps de **requĂȘte**, on utilise les modĂšles de <a href="https://pydantic-docs.helpmanual.io/" class="external-link" target="_blank">Pydantic</a> en profitant de tous leurs avantages et fonctionnalitĂ©s.
+
+!!! info
+    Pour envoyer de la donnĂ©e, vous devriez utiliser : `POST` (le plus populaire), `PUT`, `DELETE` ou `PATCH`.
+
+    Envoyer un corps dans une requĂȘte `GET` a un comportement non dĂ©fini dans les spĂ©cifications, cela est nĂ©anmoins supportĂ© par **FastAPI**, seulement pour des cas d'utilisation trĂšs complexes/extrĂȘmes.
+
+    Ceci Ă©tant dĂ©couragĂ©, la documentation interactive gĂ©nĂ©rĂ©e par Swagger UI ne montrera pas de documentation pour le corps d'une requĂȘte `GET`, et les proxys intermĂ©diaires risquent de ne pas le supporter.
+
+## Importez le `BaseModel` de Pydantic
+
+Commencez par importer la classe `BaseModel` du module `pydantic` :
+
+```Python hl_lines="4"
+{!../../../docs_src/body/tutorial001.py!}
+```
+
+## CrĂ©ez votre modĂšle de donnĂ©es
+
+DĂ©clarez ensuite votre modĂšle de donnĂ©es en tant que classe qui hĂ©rite de `BaseModel`.
+
+Utilisez les types Python standard pour tous les attributs :
+
+```Python hl_lines="7-11"
+{!../../../docs_src/body/tutorial001.py!}
+```
+
+Tout comme pour la dĂ©claration de paramĂštres de requĂȘte, quand un attribut de modĂšle a une valeur par dĂ©faut, il n'est pas nĂ©cessaire. Sinon, cet attribut doit ĂȘtre renseignĂ© dans le corps de la requĂȘte. Pour rendre ce champ optionnel simplement, utilisez `None` comme valeur par dĂ©faut.
+
+Par exemple, le modĂšle ci-dessus dĂ©clare un "objet" JSON (ou `dict` Python) tel que :
+
+```JSON
+{
+    "name": "Foo",
+    "description": "An optional description",
+    "price": 45.2,
+    "tax": 3.5
+}
+```
+
+...`description` et `tax` Ă©tant des attributs optionnels (avec `None` comme valeur par dĂ©faut), cet "objet" JSON serait aussi valide :
+
+```JSON
+{
+    "name": "Foo",
+    "price": 45.2
+}
+```
+
+## DĂ©clarez-le comme paramĂštre
+
+Pour l'ajouter Ă  votre *opĂ©ration de chemin*, dĂ©clarez-le comme vous dĂ©clareriez des paramĂštres de chemin ou de requĂȘte :
+
+```Python hl_lines="18"
+{!../../../docs_src/body/tutorial001.py!}
+```
+
+...et dĂ©clarez que son type est le modĂšle que vous avez créé : `Item`.
+
+## RĂ©sultats
+
+En utilisant uniquement les dĂ©clarations de type Python, **FastAPI** rĂ©ussit Ă  :
+
+* Lire le contenu de la requĂȘte en tant que JSON.
+* Convertir les types correspondants (si nĂ©cessaire).
+* Valider la donnĂ©e.
+    * Si la donnĂ©e est invalide, une erreur propre et claire sera renvoyĂ©e, indiquant exactement oĂč Ă©tait la donnĂ©e incorrecte.
+* Passer la donnĂ©e reçue dans le paramĂštre `item`.
+    * Ce paramĂštre ayant Ă©tĂ© dĂ©clarĂ© dans la fonction comme Ă©tant de type `Item`, vous aurez aussi tout le support offert par l'Ă©diteur (auto-complĂ©tion, etc.) pour tous les attributs de ce paramĂštre et les types de ces attributs.
+* GĂ©nĂ©rer des dĂ©finitions <a href="https://json-schema.org" class="external-link" target="_blank">JSON Schema</a> pour votre modĂšle, qui peuvent ĂȘtre utilisĂ©es oĂč vous en avez besoin dans votre projet ensuite.
+* Ces schĂ©mas participeront Ă  la constitution du schĂ©ma gĂ©nĂ©rĂ© OpenAPI, et seront donc utilisĂ©s par les documentations automatiquement gĂ©nĂ©rĂ©es.
+
+## Documentation automatique
+
+Les schĂ©mas JSON de vos modĂšles seront intĂ©grĂ©s au schĂ©ma OpenAPI global de votre application, et seront donc affichĂ©s dans la documentation interactive de l'API :
+
+<img src="/img/tutorial/body/image01.png">
+
+Et seront aussi utilisĂ©s dans chaque *opĂ©ration de chemin* de la documentation utilisant ces modĂšles :
+
+<img src="/img/tutorial/body/image02.png">
+
+## Support de l'Ă©diteur
+
+Dans votre Ă©diteur, vous aurez des annotations de types et de l'auto-complĂ©tion partout dans votre fonction (ce qui n'aurait pas Ă©tĂ© le cas si vous aviez utilisĂ© un classique `dict` plutĂŽt qu'un modĂšle Pydantic) :
+
+<img src="/img/tutorial/body/image03.png">
+
+Et vous obtenez aussi de la vĂ©rification d'erreur pour les opĂ©rations incorrectes de types :
+
+<img src="/img/tutorial/body/image04.png">
+
+Ce n'est pas un hasard, ce framework entier a Ă©tĂ© bati avec ce design comme objectif.
+
+Et cela a Ă©tĂ© rigoureusement testĂ© durant la phase de design, avant toute implĂ©mentation, pour s'assurer que cela fonctionnerait avec tous les Ă©diteurs.
+
+Des changements sur Pydantic ont mĂȘme Ă©tĂ© faits pour supporter cela.
+
+Les captures d'Ă©crans prĂ©cĂ©dentes ont Ă©tĂ© prises sur <a href="https://code.visualstudio.com" class="external-link" target="_blank">Visual Studio Code</a>.
+
+Mais vous auriez le mĂȘme support de l'Ă©diteur avec <a href="https://www.jetbrains.com/pycharm/" class="external-link" target="_blank">PyCharm</a> et la majoritĂ© des autres Ă©diteurs de code Python.
+
+<img src="/img/tutorial/body/image05.png">
+
+!!! tip "Astuce"
+    Si vous utilisez <a href="https://www.jetbrains.com/pycharm/" class="external-link" target="_blank">PyCharm</a> comme Ă©diteur, vous pouvez utiliser le Plugin <a href="https://www.jetbrains.com/pycharm/" class="external-link" target="_blank">PyCharm</a>.
+
+    Ce qui amĂ©liore le support pour les modĂšles Pydantic avec :
+
+    * de l'auto-complĂ©tion
+    * des vĂ©rifications de type
+    * du "refactoring" (ou remaniement de code)
+    * de la recherche
+    * de l'inspection
+
+## Utilisez le modĂšle
+
+Dans la fonction, vous pouvez accĂ©der Ă  tous les attributs de l'objet du modĂšle directement :
+
+```Python hl_lines="21"
+{!../../../docs_src/body/tutorial002.py!}
+```
+
+## Corps de la requĂȘte + paramĂštres de chemin
+
+Vous pouvez dĂ©clarer des paramĂštres de chemin et un corps de requĂȘte pour la mĂȘme *opĂ©ration de chemin*.
+
+**FastAPI** est capable de reconnaĂźtre que les paramĂštres de la fonction qui correspondent aux paramĂštres de chemin doivent ĂȘtre **rĂ©cupĂ©rĂ©s depuis le chemin**, et que les paramĂštres de fonctions dĂ©clarĂ©s comme modĂšles Pydantic devraient ĂȘtre **rĂ©cupĂ©rĂ©s depuis le corps de la requĂȘte**.
+
+```Python hl_lines="17-18"
+{!../../../docs_src/body/tutorial003.py!}
+```
+
+## Corps de la requĂȘte + paramĂštres de chemin et de requĂȘte
+
+Vous pouvez aussi dĂ©clarer un **corps**, et des paramĂštres de **chemin** et de **requĂȘte** dans la mĂȘme *opĂ©ration de chemin*.
+
+**FastAPI** saura reconnaĂźtre chacun d'entre eux et rĂ©cupĂ©rer la bonne donnĂ©e au bon endroit.
+
+```Python hl_lines="18"
+{!../../../docs_src/body/tutorial004.py!}
+```
+
+Les paramĂštres de la fonction seront reconnus comme tel :
+
+* Si le paramĂštre est aussi dĂ©clarĂ© dans le **chemin**, il sera utilisĂ© comme paramĂštre de chemin.
+* Si le paramĂštre est d'un **type singulier** (comme `int`, `float`, `str`, `bool`, etc.), il sera interprĂ©tĂ© comme un paramĂštre de **requĂȘte**.
+* Si le paramĂštre est dĂ©clarĂ© comme ayant pour type un **modĂšle Pydantic**, il sera interprĂ©tĂ© comme faisant partie du **corps** de la requĂȘte.
+
+!!! note
+    **FastAPI** saura que la valeur de `q` n'est pas requise grĂące Ă  la valeur par dĂ©faut `=None`.
+
+    Le type `Optional` dans `Optional[str]` n'est pas utilisĂ© par **FastAPI**, mais sera utile Ă  votre Ă©diteur pour amĂ©liorer le support offert par ce dernier et dĂ©tecter plus facilement des erreurs de type.
+
+## Sans Pydantic
+
+Si vous ne voulez pas utiliser des modĂšles Pydantic, vous pouvez aussi utiliser des paramĂštres de **Corps**. Pour cela, allez voir la partie de la documentation sur  [Corps de la requĂȘte - ParamĂštres multiples](body-multiple-params.md){.internal-link target=_blank}.
\ No newline at end of file
index c1fb0f23d8ebdb737e450d000cfd9333bd568d1c..018c2bd30242f96cf6de68e7618ff7a03f2f0503 100644 (file)
@@ -58,6 +58,7 @@ nav:
 - fastapi-people.md
 - python-types.md
 - Tutoriel - Guide utilisateur:
+  - tutorial/body.md
   - tutorial/background-tasks.md
 - async.md
 - DĂ©ploiement: