]> git.ipfire.org Git - thirdparty/fastapi/fastapi.git/commitdiff
🌐 Add French translation for `docs/fr/docs/advanced/path-operation-advanced-configura...
authorAxel <axel584@gmail.com>
Mon, 6 Mar 2023 16:28:40 +0000 (17:28 +0100)
committerGitHub <noreply@github.com>
Mon, 6 Mar 2023 16:28:40 +0000 (17:28 +0100)
Co-authored-by: Julian Maurin <julian.maurin.perso@pm.me>
Co-authored-by: Cedric Fraboulet <62244267+frabc@users.noreply.github.com>
docs/fr/docs/advanced/path-operation-advanced-configuration.md [new file with mode: 0644]
docs/fr/mkdocs.yml

diff --git a/docs/fr/docs/advanced/path-operation-advanced-configuration.md b/docs/fr/docs/advanced/path-operation-advanced-configuration.md
new file mode 100644 (file)
index 0000000..ace9f19
--- /dev/null
@@ -0,0 +1,168 @@
+# Configuration avancĂ©e des paramĂštres de chemin
+
+## ID d'opĂ©ration OpenAPI
+
+!!! Attention
+    Si vous n'ĂȘtes pas un "expert" en OpenAPI, vous n'en avez probablement pas besoin.
+
+Dans OpenAPI, les chemins sont des ressources, tels que /users/ ou /items/, exposĂ©es par votre API, et les opĂ©rations sont les mĂ©thodes HTTP utilisĂ©es pour manipuler ces chemins, telles que GET, POST ou DELETE. Les operationId sont des chaĂźnes uniques facultatives utilisĂ©es pour identifier une opĂ©ration d'un chemin. Vous pouvez dĂ©finir l'OpenAPI `operationId` Ă  utiliser dans votre *opĂ©ration de chemin* avec le paramĂštre `operation_id`.
+
+Vous devez vous assurer qu'il est unique pour chaque opĂ©ration.
+
+```Python hl_lines="6"
+{!../../../docs_src/path_operation_advanced_configuration/tutorial001.py!}
+```
+
+### Utilisation du nom *path operation function* comme operationId
+
+Si vous souhaitez utiliser les noms de fonction de vos API comme `operationId`, vous pouvez les parcourir tous et remplacer chaque `operation_id` de l'*opĂ©ration de chemin* en utilisant leur `APIRoute.name`.
+
+Vous devriez le faire aprĂšs avoir ajoutĂ© toutes vos *paramĂštres de chemin*.
+
+```Python hl_lines="2  12-21  24"
+{!../../../docs_src/path_operation_advanced_configuration/tutorial002.py!}
+```
+
+!!! Astuce
+    Si vous appelez manuellement `app.openapi()`, vous devez mettre Ă  jour les `operationId` avant.
+
+!!! Attention
+    Pour faire cela, vous devez vous assurer que chacun de vos *chemin* ait un nom unique.
+
+    MĂȘme s'ils se trouvent dans des modules diffĂ©rents (fichiers Python).
+
+## Exclusion d'OpenAPI
+
+Pour exclure un *chemin* du schĂ©ma OpenAPI gĂ©nĂ©rĂ© (et donc des systĂšmes de documentation automatiques), utilisez le paramĂštre `include_in_schema` et assignez-lui la valeur `False` :
+
+```Python hl_lines="6"
+{!../../../docs_src/path_operation_advanced_configuration/tutorial003.py!}
+```
+
+## Description avancĂ©e de docstring
+
+Vous pouvez limiter le texte utilisĂ© de la docstring d'une *fonction de chemin* qui sera affichĂ© sur OpenAPI.
+
+L'ajout d'un `\f` (un caractĂšre d'Ă©chappement "form feed") va permettre Ă  **FastAPI** de tronquer la sortie utilisĂ©e pour OpenAPI Ă  ce stade.
+
+Il n'apparaĂźtra pas dans la documentation, mais d'autres outils (tel que Sphinx) pourront utiliser le reste.
+
+```Python hl_lines="19-29"
+{!../../../docs_src/path_operation_advanced_configuration/tutorial004.py!}
+```
+
+## RĂ©ponses supplĂ©mentaires
+
+Vous avez probablement vu comment dĂ©clarer le `response_model` et le `status_code` pour une *opĂ©ration de chemin*.
+
+Cela dĂ©finit les mĂ©tadonnĂ©es sur la rĂ©ponse principale d'une *opĂ©ration de chemin*.
+
+Vous pouvez Ă©galement dĂ©clarer des rĂ©ponses supplĂ©mentaires avec leurs modĂšles, codes de statut, etc.
+
+Il y a un chapitre entier ici dans la documentation Ă  ce sujet, vous pouvez le lire sur [RĂ©ponses supplĂ©mentaires dans OpenAPI](./additional-responses.md){.internal-link target=_blank}.
+
+## OpenAPI supplĂ©mentaire
+
+Lorsque vous dĂ©clarez un *chemin* dans votre application, **FastAPI** gĂ©nĂšre automatiquement les mĂ©tadonnĂ©es concernant ce *chemin* Ă  inclure dans le schĂ©ma OpenAPI.
+
+!!! note "DĂ©tails techniques"
+    La spĂ©cification OpenAPI appelle ces mĂ©taonnĂ©es des <a href="https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#operation-object" class="external-link" target="_blank">Objets d'opĂ©ration</a>.
+
+Il contient toutes les informations sur le *chemin* et est utilisĂ© pour gĂ©nĂ©rer automatiquement la documentation.
+
+Il inclut les `tags`, `parameters`, `requestBody`, `responses`, etc.
+
+Ce schĂ©ma OpenAPI spĂ©cifique aux *operations* est normalement gĂ©nĂ©rĂ© automatiquement par **FastAPI**, mais vous pouvez Ă©galement l'Ă©tendre.
+
+!!! Astuce
+    Si vous avez seulement besoin de dĂ©clarer des rĂ©ponses supplĂ©mentaires, un moyen plus pratique de le faire est d'utiliser les [rĂ©ponses supplĂ©mentaires dans OpenAPI](./additional-responses.md){.internal-link target=_blank}.
+
+Vous pouvez Ă©tendre le schĂ©ma OpenAPI pour une *opĂ©ration de chemin* en utilisant le paramĂštre `openapi_extra`.
+
+### Extensions OpenAPI
+
+Cet `openapi_extra` peut ĂȘtre utile, par exemple, pour dĂ©clarer [OpenAPI Extensions](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#specificationExtensions) :
+
+```Python hl_lines="6"
+{!../../../docs_src/path_operation_advanced_configuration/tutorial005.py!}
+```
+
+Si vous ouvrez la documentation automatique de l'API, votre extension apparaĂźtra au bas du *chemin* spĂ©cifique.
+
+<img src="/img/tutorial/path-operation-advanced-configuration/image01.png">
+
+Et dans le fichier openapi gĂ©nĂ©rĂ© (`/openapi.json`), vous verrez Ă©galement votre extension dans le cadre du *chemin* spĂ©cifique :
+
+```JSON hl_lines="22"
+{
+    "openapi": "3.0.2",
+    "info": {
+        "title": "FastAPI",
+        "version": "0.1.0"
+    },
+    "paths": {
+        "/items/": {
+            "get": {
+                "summary": "Read Items",
+                "operationId": "read_items_items__get",
+                "responses": {
+                    "200": {
+                        "description": "Successful Response",
+                        "content": {
+                            "application/json": {
+                                "schema": {}
+                            }
+                        }
+                    }
+                },
+                "x-aperture-labs-portal": "blue"
+            }
+        }
+    }
+}
+```
+
+### Personnalisation du SchĂ©ma OpenAPI pour un chemin
+
+Le dictionnaire contenu dans la variable `openapi_extra` sera fusionnĂ© avec le schĂ©ma OpenAPI gĂ©nĂ©rĂ© automatiquement pour l'*opĂ©ration de chemin*.
+
+Ainsi, vous pouvez ajouter des donnĂ©es supplĂ©mentaires au schĂ©ma gĂ©nĂ©rĂ© automatiquement.
+
+Par exemple, vous pouvez dĂ©cider de lire et de valider la requĂȘte avec votre propre code, sans utiliser les fonctionnalitĂ©s automatiques de validation proposĂ©e par Pydantic, mais vous pouvez toujours dĂ©finir la requĂȘte dans le schĂ©ma OpenAPI.
+
+Vous pouvez le faire avec `openapi_extra` :
+
+```Python hl_lines="20-37 39-40"
+{!../../../docs_src/path_operation_advanced_configuration/tutorial006.py !}
+```
+
+Dans cet exemple, nous n'avons dĂ©clarĂ© aucun modĂšle Pydantic. En fait, le corps de la requĂȘte n'est mĂȘme pas <abbr title="converti d'un format simple, comme des octets, en objets Python">parsĂ©</abbr> en tant que JSON, il est lu directement en tant que `bytes`, et la fonction `magic_data_reader()` serait chargĂ© de l'analyser d'une maniĂšre ou d'une autre.
+
+NĂ©anmoins, nous pouvons dĂ©clarer le schĂ©ma attendu pour le corps de la requĂȘte.
+
+### Type de contenu OpenAPI personnalisĂ©
+
+En utilisant cette mĂȘme astuce, vous pouvez utiliser un modĂšle Pydantic pour dĂ©finir le schĂ©ma JSON qui est ensuite inclus dans la section de schĂ©ma OpenAPI personnalisĂ©e pour le *chemin* concernĂ©.
+
+Et vous pouvez le faire mĂȘme si le type de donnĂ©es dans la requĂȘte n'est pas au format JSON.
+
+Dans cet exemple, nous n'utilisons pas les fonctionnalitĂ©s de FastAPI pour extraire le schĂ©ma JSON des modĂšles Pydantic ni la validation automatique pour JSON. En fait, nous dĂ©clarons le type de contenu de la requĂȘte en tant que YAML, et non JSON :
+
+```Python hl_lines="17-22  24"
+{!../../../docs_src/path_operation_advanced_configuration/tutorial007.py!}
+```
+
+NĂ©anmoins, bien que nous n'utilisions pas la fonctionnalitĂ© par dĂ©faut, nous utilisons toujours un modĂšle Pydantic pour gĂ©nĂ©rer manuellement le schĂ©ma JSON pour les donnĂ©es que nous souhaitons recevoir en YAML.
+
+Ensuite, nous utilisons directement la requĂȘte et extrayons son contenu en tant qu'octets. Cela signifie que FastAPI n'essaiera mĂȘme pas d'analyser le payload de la requĂȘte en tant que JSON.
+
+Et nous analysons directement ce contenu YAML, puis nous utilisons Ă  nouveau le mĂȘme modĂšle Pydantic pour valider le contenu YAML :
+
+```Python hl_lines="26-33"
+{!../../../docs_src/path_operation_advanced_configuration/tutorial007.py!}
+```
+
+!!! Astuce
+    Ici, nous rĂ©utilisons le mĂȘme modĂšle Pydantic.
+
+    Mais nous aurions pu tout aussi bien pu le valider d'une autre maniĂšre.
index 28fc795f94f7820d4a5487624197839e38c819bf..f5288a8fa819cb48b43d1a63aeb4e8d39c9178a0 100644 (file)
@@ -70,6 +70,7 @@ nav:
   - tutorial/background-tasks.md
   - tutorial/debugging.md
 - Guide utilisateur avancĂ©:
+  - advanced/path-operation-advanced-configuration.md
   - advanced/additional-status-codes.md
   - advanced/additional-responses.md
 - async.md