diff --git a/docs/fr/docs/advanced/additional-responses.md b/docs/fr/docs/advanced/additional-responses.md index e7b684e36..bcf562f30 100644 --- a/docs/fr/docs/advanced/additional-responses.md +++ b/docs/fr/docs/advanced/additional-responses.md @@ -34,7 +34,7 @@ Gardez à l'esprit que vous devez renvoyer directement `JSONResponse`. /// -/// info +/// note | Remarque La clé `model` ne fait pas partie d'OpenAPI. @@ -183,7 +183,7 @@ Notez que vous devez retourner l'image en utilisant directement un `FileResponse /// -/// info +/// note | Remarque À moins que vous ne spécifiiez explicitement un type de média différent dans votre paramètre `responses`, FastAPI supposera que la réponse a le même type de média que la classe de réponse principale (par défaut `application/json`). diff --git a/docs/fr/docs/advanced/advanced-dependencies.md b/docs/fr/docs/advanced/advanced-dependencies.md index d5066ca25..4ff72581c 100644 --- a/docs/fr/docs/advanced/advanced-dependencies.md +++ b/docs/fr/docs/advanced/advanced-dependencies.md @@ -78,7 +78,7 @@ Les dépendances avec `yield` ont évolué au fil du temps pour couvrir différe ### Dépendances avec `yield` et `scope` { #dependencies-with-yield-and-scope } -Dans la version 0.121.0, **FastAPI** a ajouté la prise en charge de `Depends(scope="function")` pour les dépendances avec `yield`. +Dans la version 0.121.0, FastAPI a ajouté la prise en charge de `Depends(scope="function")` pour les dépendances avec `yield`. Avec `Depends(scope="function")`, le code d’arrêt après `yield` s’exécute immédiatement après la fin de la *fonction de chemin d'accès*, avant que la réponse ne soit renvoyée au client. @@ -98,7 +98,7 @@ Par exemple, si vous aviez une session de base de données dans une dépendance Ce comportement a été annulé en 0.118.0, afin que le code d’arrêt après `yield` s’exécute après l’envoi de la réponse. -/// info +/// note | Remarque Comme vous le verrez ci‑dessous, c’est très similaire au comportement avant la version 0.106.0, mais avec plusieurs améliorations et corrections de bogues pour des cas limites. diff --git a/docs/fr/docs/advanced/custom-response.md b/docs/fr/docs/advanced/custom-response.md index a1a60ebf6..8fd2e627f 100644 --- a/docs/fr/docs/advanced/custom-response.md +++ b/docs/fr/docs/advanced/custom-response.md @@ -41,7 +41,7 @@ Pour renvoyer une réponse avec du HTML directement depuis **FastAPI**, utilisez {* ../../docs_src/custom_response/tutorial002_py310.py hl[2,7] *} -/// info +/// note | Remarque Le paramètre `response_class` sera aussi utilisé pour définir le « media type » de la réponse. @@ -65,7 +65,7 @@ Une `Response` renvoyée directement par votre *fonction de chemin d'accès* ne /// -/// info +/// note | Remarque Bien sûr, l'en-tête `Content-Type` réel, le code d'état, etc., proviendront de l'objet `Response` que vous avez renvoyé. diff --git a/docs/fr/docs/advanced/dataclasses.md b/docs/fr/docs/advanced/dataclasses.md index b63a995d9..057e49df2 100644 --- a/docs/fr/docs/advanced/dataclasses.md +++ b/docs/fr/docs/advanced/dataclasses.md @@ -18,7 +18,7 @@ Et bien sûr, cela prend en charge la même chose : Cela fonctionne de la même manière qu'avec les modèles Pydantic. Et, en réalité, c'est mis en œuvre de la même façon en interne, en utilisant Pydantic. -/// info +/// note | Remarque Gardez à l'esprit que les dataclasses ne peuvent pas tout ce que peuvent faire les modèles Pydantic. diff --git a/docs/fr/docs/advanced/events.md b/docs/fr/docs/advanced/events.md index c585dd563..5b90c7b2e 100644 --- a/docs/fr/docs/advanced/events.md +++ b/docs/fr/docs/advanced/events.md @@ -120,7 +120,7 @@ Pour ajouter une fonction qui doit être exécutée lorsque l'application s'arr Ici, la fonction gestionnaire de l'événement `shutdown` écrira une ligne de texte « Application shutdown » dans un fichier `log.txt`. -/// info +/// note | Remarque Dans la fonction `open()`, le `mode="a"` signifie « append » (ajouter) ; la ligne sera donc ajoutée après ce qui se trouve déjà dans ce fichier, sans écraser le contenu précédent. @@ -152,7 +152,7 @@ Juste un détail technique pour les nerds curieux. 🤓 Sous le capot, dans la spécification technique ASGI, cela fait partie du [protocole Lifespan](https://asgi.readthedocs.io/en/latest/specs/lifespan.html), et il y définit des événements appelés `startup` et `shutdown`. -/// info +/// note | Remarque Vous pouvez en lire plus sur les gestionnaires `lifespan` de Starlette dans la [documentation « Lifespan » de Starlette](https://www.starlette.dev/lifespan/). diff --git a/docs/fr/docs/advanced/generate-clients.md b/docs/fr/docs/advanced/generate-clients.md index 69402aefe..5625b0648 100644 --- a/docs/fr/docs/advanced/generate-clients.md +++ b/docs/fr/docs/advanced/generate-clients.md @@ -1,4 +1,4 @@ -# Générer des SDK { #generating-sdks } +# Générer des SDKs { #generating-sdks } Parce que **FastAPI** est basé sur la spécification **OpenAPI**, ses API peuvent être décrites dans un format standard compris par de nombreux outils. @@ -31,7 +31,6 @@ Leur sponsoring démontre également un fort engagement envers la **communauté* Par exemple, vous pourriez essayer : * [Stainless](https://www.stainless.com/?utm_source=fastapi&utm_medium=referral) -* [liblab](https://developers.liblab.com/tutorials/sdk-for-fastapi?utm_source=fastapi) Certaines de ces solutions peuvent aussi être open source ou proposer des niveaux gratuits, afin que vous puissiez les essayer sans engagement financier. D’autres générateurs de SDK commerciaux existent et peuvent être trouvés en ligne. 🤓 diff --git a/docs/fr/docs/advanced/openapi-callbacks.md b/docs/fr/docs/advanced/openapi-callbacks.md index 369a638c8..e21254bc1 100644 --- a/docs/fr/docs/advanced/openapi-callbacks.md +++ b/docs/fr/docs/advanced/openapi-callbacks.md @@ -167,13 +167,13 @@ Remarquez que l’URL de callback utilisée contient l’URL reçue en paramètr À ce stade, vous avez le(s) *chemin(s) d'accès de callback* nécessaire(s) (celui/ceux que la *personne développeuse externe* doit implémenter dans l’*API externe*) dans le routeur de callback que vous avez créé ci-dessus. -Utilisez maintenant le paramètre `callbacks` dans *le décorateur de chemin d'accès de votre API* pour passer l’attribut `.routes` (qui est en fait juste une `list` de routes/*chemins d'accès*) depuis ce routeur de callback : +Utilisez maintenant le paramètre `callbacks` dans *le décorateur de chemin d'accès de votre API* pour passer l’attribut `.routes` depuis ce routeur de callback : {* ../../docs_src/openapi_callbacks/tutorial001_py310.py hl[33] *} /// tip | Astuce -Remarquez que vous ne passez pas le routeur lui-même (`invoices_callback_router`) à `callback=`, mais l’attribut `.routes`, comme dans `invoices_callback_router.routes`. +Remarquez que vous ne passez pas le routeur lui-même (`invoices_callback_router`) à `callbacks=`, mais son attribut `.routes`, comme dans `invoices_callback_router.routes`. FastAPI utilisera ces routes pour générer la documentation OpenAPI du callback. /// diff --git a/docs/fr/docs/advanced/openapi-webhooks.md b/docs/fr/docs/advanced/openapi-webhooks.md index c36c2f82b..722455063 100644 --- a/docs/fr/docs/advanced/openapi-webhooks.md +++ b/docs/fr/docs/advanced/openapi-webhooks.md @@ -16,13 +16,13 @@ Et vos utilisateurs définissent aussi, d'une manière ou d'une autre (par exemp Toute la logique de gestion des URL des webhooks et le code qui envoie effectivement ces requêtes vous incombent. Vous l'implémentez comme vous le souhaitez dans votre propre code. -## Documenter des webhooks avec FastAPI et OpenAPI { #documenting-webhooks-with-fastapi-and-openapi } +## Documenter des webhooks avec **FastAPI** et OpenAPI { #documenting-webhooks-with-fastapi-and-openapi } -Avec FastAPI, en utilisant OpenAPI, vous pouvez définir les noms de ces webhooks, les types d'opérations HTTP que votre application peut envoyer (par exemple `POST`, `PUT`, etc.) et les corps des requêtes que votre application enverra. +Avec **FastAPI**, en utilisant OpenAPI, vous pouvez définir les noms de ces webhooks, les types d'opérations HTTP que votre application peut envoyer (par exemple `POST`, `PUT`, etc.) et les **corps** des requêtes que votre application enverra. -Cela peut grandement faciliter la tâche de vos utilisateurs pour implémenter leurs API afin de recevoir vos requêtes de webhook ; ils pourront même peut-être générer automatiquement une partie de leur propre code d'API. +Cela peut grandement faciliter la tâche de vos utilisateurs pour **implémenter leurs API** afin de recevoir vos requêtes de **webhook** ; ils pourront même peut-être générer automatiquement une partie de leur propre code d'API. -/// info +/// note | Remarque Les webhooks sont disponibles dans OpenAPI 3.1.0 et versions ultérieures, pris en charge par FastAPI `0.99.0` et versions ultérieures. @@ -30,13 +30,13 @@ Les webhooks sont disponibles dans OpenAPI 3.1.0 et versions ultérieures, pris ## Créer une application avec des webhooks { #an-app-with-webhooks } -Lorsque vous créez une application FastAPI, il existe un attribut `webhooks` que vous pouvez utiliser pour définir des webhooks, de la même manière que vous définiriez des chemins d'accès, par exemple avec `@app.webhooks.post()`. +Lorsque vous créez une application **FastAPI**, il existe un attribut `webhooks` que vous pouvez utiliser pour définir des webhooks, de la même manière que vous définiriez des chemins d'accès, par exemple avec `@app.webhooks.post()`. {* ../../docs_src/openapi_webhooks/tutorial001_py310.py hl[9:12,15:20] *} -Les webhooks que vous définissez apparaîtront dans le schéma OpenAPI et dans l'interface de documentation automatique. +Les webhooks que vous définissez apparaîtront dans le schéma **OpenAPI** et dans l'**interface de documentation** automatique. -/// info +/// note | Remarque L'objet `app.webhooks` est en fait simplement un `APIRouter`, le même type que vous utiliseriez pour structurer votre application en plusieurs fichiers. @@ -50,6 +50,6 @@ C'est parce qu'on s'attend à ce que vos utilisateurs définissent, par un autre Vous pouvez maintenant démarrer votre application et aller sur [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs). -Vous verrez que votre documentation contient les chemins d'accès habituels et désormais aussi des webhooks : +Vous verrez que votre documentation contient les *chemins d'accès* habituels et désormais aussi des **webhooks** : diff --git a/docs/fr/docs/advanced/path-operation-advanced-configuration.md b/docs/fr/docs/advanced/path-operation-advanced-configuration.md index 67a5d46d4..0c56a1406 100644 --- a/docs/fr/docs/advanced/path-operation-advanced-configuration.md +++ b/docs/fr/docs/advanced/path-operation-advanced-configuration.md @@ -16,17 +16,11 @@ Vous devez vous assurer qu’il est unique pour chaque opération. ### Utiliser le nom de la fonction de chemin d’accès comme operationId { #using-the-path-operation-function-name-as-the-operationid } -Si vous souhaitez utiliser les noms de fonction de vos API comme `operationId`, vous pouvez les parcourir tous et remplacer l’`operation_id` de chaque chemin d’accès en utilisant leur `APIRoute.name`. +Si vous souhaitez utiliser les noms de fonction de vos API comme `operationId`, vous pouvez passer une fonction personnalisée `generate_unique_id_function` à `FastAPI`. -Vous devez le faire après avoir ajouté tous vos chemins d’accès. +Cette fonction reçoit chaque `APIRoute` et renvoie l’`operationId` à utiliser pour ce chemin d’accès. -{* ../../docs_src/path_operation_advanced_configuration/tutorial002_py310.py hl[2, 12:21, 24] *} - -/// tip | Astuce - -Si vous appelez manuellement `app.openapi()`, vous devez mettre à jour les `operationId` avant cela. - -/// +{* ../../docs_src/path_operation_advanced_configuration/tutorial002_py310.py hl[2,5:6,9] *} /// warning | Alertes diff --git a/docs/fr/docs/advanced/response-directly.md b/docs/fr/docs/advanced/response-directly.md index 5ef479584..3c3827d66 100644 --- a/docs/fr/docs/advanced/response-directly.md +++ b/docs/fr/docs/advanced/response-directly.md @@ -18,7 +18,7 @@ Vous aurez normalement une bien meilleure performance en utilisant un [Modèle d Vous pouvez renvoyer une `Response` ou n'importe laquelle de ses sous-classes. -/// info +/// note | Remarque `JSONResponse` est elle-même une sous-classe de `Response`. diff --git a/docs/fr/docs/advanced/security/oauth2-scopes.md b/docs/fr/docs/advanced/security/oauth2-scopes.md index f27b95b4b..af63ce553 100644 --- a/docs/fr/docs/advanced/security/oauth2-scopes.md +++ b/docs/fr/docs/advanced/security/oauth2-scopes.md @@ -46,7 +46,7 @@ Ils sont généralement utilisés pour déclarer des permissions de sécurité s * `instagram_basic` est utilisé par Facebook / Instagram. * `https://www.googleapis.com/auth/drive` est utilisé par Google. -/// info +/// note | Remarque Dans OAuth2, un « scope » est simplement une chaîne qui déclare une permission spécifique requise. @@ -126,7 +126,7 @@ Nous le faisons ici pour montrer comment **FastAPI** gère des scopes déclarés {* ../../docs_src/security/tutorial005_an_py310.py hl[5,141,172] *} -/// info | Détails techniques +/// note | Détails techniques `Security` est en réalité une sous-classe de `Depends`, et elle n’a qu’un paramètre supplémentaire que nous verrons plus tard. diff --git a/docs/fr/docs/advanced/stream-data.md b/docs/fr/docs/advanced/stream-data.md index 3b22910a1..e4939f256 100644 --- a/docs/fr/docs/advanced/stream-data.md +++ b/docs/fr/docs/advanced/stream-data.md @@ -4,7 +4,7 @@ Si vous voulez diffuser des données pouvant être structurées en JSON, vous de Mais si vous voulez diffuser des données binaires pures ou des chaînes, voici comment procéder. -/// info +/// note | Remarque Ajouté dans FastAPI 0.134.0. @@ -90,7 +90,7 @@ Par exemple, ils n'ont pas de `await file.read()`, ni de `async for chunk in fil Et dans de nombreux cas, leur lecture serait une opération bloquante (pouvant bloquer la boucle d'événements), car ils sont lus depuis le disque ou le réseau. -/// info +/// note | Remarque L'exemple ci-dessus est en réalité une exception, car l'objet `io.BytesIO` est déjà en mémoire ; sa lecture ne bloquera donc rien. diff --git a/docs/fr/docs/advanced/strict-content-type.md b/docs/fr/docs/advanced/strict-content-type.md index d5c749e9d..bd4ba3b80 100644 --- a/docs/fr/docs/advanced/strict-content-type.md +++ b/docs/fr/docs/advanced/strict-content-type.md @@ -81,7 +81,7 @@ Si vous devez prendre en charge des clients qui n’envoient pas d’en-tête `C Avec ce paramètre, les requêtes sans en-tête `Content-Type` verront leur corps analysé comme JSON, ce qui correspond au comportement des anciennes versions de FastAPI. -/// info +/// note | Remarque Ce comportement et cette configuration ont été ajoutés dans FastAPI 0.132.0. diff --git a/docs/fr/docs/advanced/websockets.md b/docs/fr/docs/advanced/websockets.md index 737bbc72e..b544c6d06 100644 --- a/docs/fr/docs/advanced/websockets.md +++ b/docs/fr/docs/advanced/websockets.md @@ -111,7 +111,7 @@ Ils fonctionnent de la même manière que pour les autres endpoints/*chemins d'a {* ../../docs_src/websockets_/tutorial002_an_py310.py hl[68:69,82] *} -/// info +/// note | Remarque Comme il s'agit d'un WebSocket, il n'est pas vraiment logique de lever une `HTTPException`, nous levons plutôt une `WebSocketException`. diff --git a/docs/fr/docs/advanced/wsgi.md b/docs/fr/docs/advanced/wsgi.md index fe39729f7..a1e56a45d 100644 --- a/docs/fr/docs/advanced/wsgi.md +++ b/docs/fr/docs/advanced/wsgi.md @@ -6,7 +6,7 @@ Pour cela, vous pouvez utiliser `WSGIMiddleware` et l'utiliser pour envelopper v ## Utiliser `WSGIMiddleware` { #using-wsgimiddleware } -/// info +/// note | Remarque Cela nécessite l'installation de `a2wsgi`, par exemple avec `pip install a2wsgi`. diff --git a/docs/fr/docs/deployment/docker.md b/docs/fr/docs/deployment/docker.md index 1567e1d58..5184d51df 100644 --- a/docs/fr/docs/deployment/docker.md +++ b/docs/fr/docs/deployment/docker.md @@ -132,7 +132,7 @@ Successfully installed fastapi pydantic -/// info +/// note | Remarque Il existe d'autres formats et outils pour définir et installer des dépendances de paquets. @@ -556,7 +556,7 @@ Si vous utilisez des conteneurs (par ex. Docker, Kubernetes), alors il existe de Si vous avez **plusieurs conteneurs**, probablement chacun exécutant un **seul processus** (par exemple, dans un cluster **Kubernetes**), alors vous voudrez probablement avoir un **conteneur séparé** effectuant le travail des **étapes préalables** dans un seul conteneur, exécutant un seul processus, **avant** d'exécuter les conteneurs worker répliqués. -/// info +/// note | Remarque Si vous utilisez Kubernetes, ce sera probablement un [Init Container](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/). diff --git a/docs/fr/docs/deployment/fastapicloud.md b/docs/fr/docs/deployment/fastapicloud.md index 836e91489..82c16330e 100644 --- a/docs/fr/docs/deployment/fastapicloud.md +++ b/docs/fr/docs/deployment/fastapicloud.md @@ -1,26 +1,6 @@ # FastAPI Cloud { #fastapi-cloud } -Vous pouvez déployer votre application FastAPI sur [FastAPI Cloud](https://fastapicloud.com) avec une **seule commande**, allez vous inscrire sur la liste d’attente si ce n’est pas déjà fait. 🚀 - -## Se connecter { #login } - -Vous devez vous assurer que vous avez déjà un compte **FastAPI Cloud** (nous vous avons invité depuis la liste d’attente 😉). - -Connectez-vous ensuite : - -
- -```console -$ fastapi login - -You are logged in to FastAPI Cloud 🚀 -``` - -
- -## Déployer { #deploy } - -Déployez maintenant votre application, avec une **seule commande** : +Vous pouvez déployer votre application FastAPI sur [FastAPI Cloud](https://fastapicloud.com) avec une **seule commande**. 🚀
@@ -36,6 +16,8 @@ Deploying to FastAPI Cloud...
+La CLI détecte automatiquement votre application FastAPI et la déploie dans le cloud. Si vous n’êtes pas connecté, votre navigateur s’ouvrira pour terminer le processus d’authentification. + C’est tout ! Vous pouvez maintenant accéder à votre application à cette URL. ✨ ## À propos de FastAPI Cloud { #about-fastapi-cloud } @@ -62,4 +44,4 @@ Suivez les guides de votre fournisseur cloud pour déployer des applications Fas ## Déployer votre propre serveur { #deploy-your-own-server } -Je vous expliquerai également plus loin dans ce guide de **Déploiement** tous les détails, afin que vous compreniez ce qui se passe, ce qui doit être fait, et comment déployer des applications FastAPI par vous-même, y compris sur vos propres serveurs. 🤓 +Je vous expliquerai également plus loin dans ce guide de **Déploiement** tous les détails, afin que vous compreniez ce qui se passe, ce qui doit être fait, ou comment déployer des applications FastAPI par vous-même, y compris sur vos propres serveurs. 🤓 diff --git a/docs/fr/docs/deployment/manually.md b/docs/fr/docs/deployment/manually.md index 4b87df993..90dd31d85 100644 --- a/docs/fr/docs/deployment/manually.md +++ b/docs/fr/docs/deployment/manually.md @@ -56,7 +56,6 @@ Il existe plusieurs alternatives, notamment : * [Hypercorn](https://hypercorn.readthedocs.io/) : un serveur ASGI compatible avec HTTP/2 et Trio entre autres fonctionnalités. * [Daphne](https://github.com/django/daphne) : le serveur ASGI conçu pour Django Channels. * [Granian](https://github.com/emmett-framework/granian) : un serveur HTTP Rust pour les applications Python. -* [NGINX Unit](https://unit.nginx.org/howto/fastapi/) : NGINX Unit est un environnement d'exécution d'applications web léger et polyvalent. ## Machine serveur et programme serveur { #server-machine-and-server-program } diff --git a/docs/fr/docs/deployment/server-workers.md b/docs/fr/docs/deployment/server-workers.md index c0eca2dcc..4271621c8 100644 --- a/docs/fr/docs/deployment/server-workers.md +++ b/docs/fr/docs/deployment/server-workers.md @@ -17,7 +17,7 @@ Comme vous l'avez vu dans le chapitre précédent sur les [Concepts de déploiem Ici, je vais vous montrer comment utiliser Uvicorn avec des processus workers en utilisant la commande `fastapi` ou directement la commande `uvicorn`. -/// info | Info +/// note | Remarque Si vous utilisez des conteneurs, par exemple avec Docker ou Kubernetes, je vous en dirai plus à ce sujet dans le prochain chapitre : [FastAPI dans des conteneurs - Docker](docker.md). diff --git a/docs/fr/docs/how-to/extending-openapi.md b/docs/fr/docs/how-to/extending-openapi.md index bdf4eeba9..dab3e5868 100644 --- a/docs/fr/docs/how-to/extending-openapi.md +++ b/docs/fr/docs/how-to/extending-openapi.md @@ -25,9 +25,17 @@ Et cette fonction `get_openapi()` reçoit comme paramètres : * `openapi_version` : La version de la spécification OpenAPI utilisée. Par défaut, la plus récente : `3.1.0`. * `summary` : Un court résumé de l'API. * `description` : La description de votre API ; elle peut inclure du markdown et sera affichée dans la documentation. -* `routes` : Une liste de routes ; chacune correspond à un *chemin d'accès* enregistré. Elles sont extraites de `app.routes`. +* `routes` : Les routes de l'application, extraites de `app.routes`. FastAPI les utilise pour collecter les *chemins d'accès* enregistrés, y compris ceux provenant des routeurs inclus. -/// info +/// tip | Détails techniques + +`app.routes` est un arbre de routes de plus bas niveau. Il peut inclure des routes candidates que FastAPI utilise en interne pour les routeurs inclus, et pas uniquement des objets `APIRoute` finaux. + +Vous pouvez néanmoins passer `app.routes` à `get_openapi()`. FastAPI parcourra cet arbre de routes pour collecter les chemins d'accès effectifs. + +/// + +/// note | Remarque Le paramètre `summary` est disponible à partir d'OpenAPI 3.1.0, pris en charge par FastAPI 0.99.0 et versions ultérieures. diff --git a/docs/fr/docs/how-to/separate-openapi-schemas.md b/docs/fr/docs/how-to/separate-openapi-schemas.md index fd767d738..aef467ed6 100644 --- a/docs/fr/docs/how-to/separate-openapi-schemas.md +++ b/docs/fr/docs/how-to/separate-openapi-schemas.md @@ -85,7 +85,7 @@ Le cas d'usage principal est probablement que vous avez déjà du code client/SD Dans ce cas, vous pouvez désactiver cette fonctionnalité dans **FastAPI**, avec le paramètre `separate_input_output_schemas=False`. -/// info | info +/// note | Remarque La prise en charge de `separate_input_output_schemas` a été ajoutée dans FastAPI `0.102.0`. 🤓 diff --git a/docs/fr/docs/index.md b/docs/fr/docs/index.md index 4c5bea3e4..3cfcdfd29 100644 --- a/docs/fr/docs/index.md +++ b/docs/fr/docs/index.md @@ -143,7 +143,7 @@ Les principales fonctionnalités sont : --- -« _Si quelqu’un cherche à construire une API Python de production, je recommande vivement **FastAPI**. Il est **magnifiquement conçu**, **simple à utiliser** et **hautement scalable** — il est devenu un **composant clé** de notre stratégie de développement API-first._ » +« _Si quelqu’un cherche à construire une API Python de production, je recommande vivement **FastAPI**. Il est **magnifiquement conçu**, **simple à utiliser** et **hautement scalable**, il est devenu un **composant clé** de notre stratégie de développement API-first et alimente de nombreuses automatisations et services tels que notre Virtual TAC Engineer._ »
Deon Pillsbury - Cisco (ref)
@@ -492,9 +492,7 @@ Pour un exemple plus complet comprenant plus de fonctionnalités, voir le @@ -510,6 +508,8 @@ Deploying to FastAPI Cloud... +La CLI détectera automatiquement votre application FastAPI et la déploiera dans le cloud. Si vous n'êtes pas connecté, votre navigateur s'ouvrira pour terminer le processus d'authentification. + C'est tout ! Vous pouvez maintenant accéder à votre application à cette URL. ✨ #### À propos de FastAPI Cloud { #about-fastapi-cloud } diff --git a/docs/fr/docs/tutorial/bigger-applications.md b/docs/fr/docs/tutorial/bigger-applications.md index d5e1bb567..0e331e139 100644 --- a/docs/fr/docs/tutorial/bigger-applications.md +++ b/docs/fr/docs/tutorial/bigger-applications.md @@ -396,9 +396,9 @@ Cela inclura toutes les routes de ce routeur comme faisant partie de l'applicati /// note | Détails techniques -En interne, cela créera en fait un *chemin d'accès* pour chaque *chemin d'accès* qui a été déclaré dans le `APIRouter`. +FastAPI conserve le `APIRouter` original et ses `APIRoute` actifs lorsque le routeur est inclus dans l'application principale. -Donc, en coulisses, cela fonctionnera comme si tout faisait partie d'une seule et même application. +Cela signifie que des sous-classes personnalisées de `APIRouter` et `APIRoute` peuvent toujours intervenir après l'inclusion du routeur. /// @@ -406,7 +406,7 @@ Donc, en coulisses, cela fonctionnera comme si tout faisait partie d'une seule e Vous n'avez pas à vous soucier de la performance lors de l'inclusion de routeurs. -Cela prendra des microsecondes et ne se produira qu'au démarrage. +C'est conçu pour être léger et pour éviter d'ajouter une surcharge à chaque requête. Donc cela n'affectera pas la performance. ⚡ @@ -461,7 +461,7 @@ Les `APIRouter` ne sont pas « montés », ils ne sont pas isolés du reste de l C'est parce que nous voulons inclure leurs *chemins d'accès* dans le schéma OpenAPI et les interfaces utilisateur. -Comme nous ne pouvons pas simplement les isoler et les « monter » indépendamment du reste, les *chemins d'accès* sont « clonés » (recréés), pas inclus directement. +FastAPI conserve les routeurs et chemins d'accès originaux actifs, et combine les préfixes de routeur, dépendances, tags, réponses et autres métadonnées lors du traitement des requêtes et de la génération d'OpenAPI. /// @@ -482,7 +482,7 @@ from app.main import app De cette façon, la commande `fastapi` saura où trouver votre app. -/// note | Remarque +/// Note | Remarque Vous pourriez aussi passer le chemin à la commande, comme : @@ -532,4 +532,16 @@ De la même manière que vous pouvez inclure un `APIRouter` dans une application router.include_router(other_router) ``` -Vous devez vous assurer de le faire avant d'inclure `router` dans l'application `FastAPI`, afin que les *chemins d'accès* de `other_router` soient également inclus. +Vous pouvez le faire avant ou après avoir inclus `router` dans l'application `FastAPI`. FastAPI inclura quand même les *chemins d'accès* de `other_router` dans le routage et dans OpenAPI. + +Il en va de même pour les *chemins d'accès* ajoutés plus tard aux routeurs. Ils seront visibles via l'inclusion antérieure également. + +/// warning | Détails techniques + +Évitez de modifier directement `router.routes` après avoir inclus un routeur. FastAPI considère l'inclusion d'un routeur comme « en direct », de sorte que le routeur original et ses routes restent utilisés pour le routage et la génération d'OpenAPI. + +Utilisez les API documentées comme les décorateurs de *chemin d'accès* et `.include_router()` pour ajouter des routes et des routeurs. + +Considérez `router.routes` comme un arbre de routes de plus bas niveau pouvant contenir des définitions de routes et des routeurs inclus, et évitez de vous y fier comme à une liste plate de *chemins d'accès* finaux. + +/// diff --git a/docs/fr/docs/tutorial/body-multiple-params.md b/docs/fr/docs/tutorial/body-multiple-params.md index 1c1ab0fca..d8d1af94f 100644 --- a/docs/fr/docs/tutorial/body-multiple-params.md +++ b/docs/fr/docs/tutorial/body-multiple-params.md @@ -108,7 +108,7 @@ Par exemple : {* ../../docs_src/body_multiple_params/tutorial004_an_py310.py hl[28] *} -/// info +/// note | Remarque `Body` possède également les mêmes paramètres supplémentaires de validation et de métadonnées que `Query`, `Path` et d'autres que vous verrez plus tard. @@ -123,7 +123,7 @@ Par défaut, **FastAPI** attendra alors son contenu directement. Mais si vous voulez qu'il attende un JSON avec une clé `item` contenant le contenu du modèle, comme lorsqu'on déclare des paramètres supplémentaires du corps de la requête, vous pouvez utiliser le paramètre spécial `embed` de `Body` : ```Python -item: Item = Body(embed=True) +item: Annotated[Item, Body(embed=True)] ``` comme dans : diff --git a/docs/fr/docs/tutorial/body-nested-models.md b/docs/fr/docs/tutorial/body-nested-models.md index 2d4064310..014551bc7 100644 --- a/docs/fr/docs/tutorial/body-nested-models.md +++ b/docs/fr/docs/tutorial/body-nested-models.md @@ -135,7 +135,7 @@ Cela attendra (convertira, validera, documentera, etc.) un corps JSON comme : ] } ``` -/// info +/// note | Remarque Remarquez que la clé `images` contient maintenant une liste d'objets image. @@ -147,7 +147,7 @@ Vous pouvez définir des modèles imbriqués à une profondeur arbitraire : {* ../../docs_src/body_nested_models/tutorial007_py310.py hl[7,12,18,21,25] *} -/// info +/// note | Remarque Remarquez que `Offer` a une liste d’`Item`, qui à leur tour ont une liste optionnelle d’`Image`. diff --git a/docs/fr/docs/tutorial/body.md b/docs/fr/docs/tutorial/body.md index 6a9466798..55d184259 100644 --- a/docs/fr/docs/tutorial/body.md +++ b/docs/fr/docs/tutorial/body.md @@ -8,7 +8,7 @@ Votre API aura presque toujours à envoyer un corps de **réponse**. Mais un cli Pour déclarer un corps de **requête**, on utilise les modèles de [Pydantic](https://docs.pydantic.dev/) en profitant de tous leurs avantages et fonctionnalités. -/// info +/// note | Remarque Pour envoyer de la donnée, vous devez utiliser : `POST` (le plus populaire), `PUT`, `DELETE` ou `PATCH`. diff --git a/docs/fr/docs/tutorial/cookie-param-models.md b/docs/fr/docs/tutorial/cookie-param-models.md index c6fc2f826..2b8edbab7 100644 --- a/docs/fr/docs/tutorial/cookie-param-models.md +++ b/docs/fr/docs/tutorial/cookie-param-models.md @@ -32,7 +32,7 @@ Vous pouvez voir les cookies définis dans l'interface de la documentation à `/ -/// info +/// note | Remarque Gardez à l'esprit que, comme les **navigateurs gèrent les cookies** de manière particulière et en arrière-plan, ils **n'autorisent pas** facilement **JavaScript** à y accéder. diff --git a/docs/fr/docs/tutorial/cookie-params.md b/docs/fr/docs/tutorial/cookie-params.md index 8f77d35dc..1d3801219 100644 --- a/docs/fr/docs/tutorial/cookie-params.md +++ b/docs/fr/docs/tutorial/cookie-params.md @@ -24,13 +24,13 @@ Mais rappelez-vous que lorsque vous importez `Query`, `Path`, `Cookie` et d'autr /// -/// info +/// note | Remarque Pour déclarer des cookies, vous devez utiliser `Cookie`, sinon les paramètres seraient interprétés comme des paramètres de requête. /// -/// info +/// note | Remarque Gardez à l'esprit que, comme **les navigateurs gèrent les cookies** de manière particulière et en coulisses, ils **n'autorisent pas** facilement **JavaScript** à y accéder. diff --git a/docs/fr/docs/tutorial/debugging.md b/docs/fr/docs/tutorial/debugging.md index 6452b43fa..1a3e9c509 100644 --- a/docs/fr/docs/tutorial/debugging.md +++ b/docs/fr/docs/tutorial/debugging.md @@ -72,7 +72,7 @@ Ainsi, la ligne : ne sera pas exécutée. -/// info +/// note | Remarque Pour plus d'informations, consultez [la documentation officielle de Python](https://docs.python.org/3/library/__main__.html). diff --git a/docs/fr/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md b/docs/fr/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md index b32728a30..ce3c7923e 100644 --- a/docs/fr/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md +++ b/docs/fr/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md @@ -28,7 +28,7 @@ Cela peut également éviter toute confusion pour les nouveaux développeurs qui /// -/// info | Info +/// note | Remarque Dans cet exemple, nous utilisons des en-têtes personnalisés fictifs `X-Key` et `X-Token`. diff --git a/docs/fr/docs/tutorial/dependencies/dependencies-with-yield.md b/docs/fr/docs/tutorial/dependencies/dependencies-with-yield.md index 53d4ae4cf..8da931d11 100644 --- a/docs/fr/docs/tutorial/dependencies/dependencies-with-yield.md +++ b/docs/fr/docs/tutorial/dependencies/dependencies-with-yield.md @@ -170,7 +170,7 @@ participant tasks as Background tasks end ``` -/// info +/// note | Remarque Une **seule réponse** sera envoyée au client. Il peut s'agir d'une des réponses d'erreur ou de la réponse provenant du *chemin d'accès*. diff --git a/docs/fr/docs/tutorial/dependencies/index.md b/docs/fr/docs/tutorial/dependencies/index.md index 03eea57e3..84b4b70b6 100644 --- a/docs/fr/docs/tutorial/dependencies/index.md +++ b/docs/fr/docs/tutorial/dependencies/index.md @@ -6,7 +6,7 @@ Il est conçu pour être très simple à utiliser, et pour faciliter l’intégr ## Qu’est-ce que « l’injection de dépendances » { #what-is-dependency-injection } -L’**« injection de dépendances »** signifie, en programmation, qu’il existe un moyen pour votre code (dans ce cas, vos fonctions de chemins d’accès) de déclarer ce dont il a besoin pour fonctionner et utiliser : « dépendances ». +L’**« injection de dépendances »** signifie, en programmation, qu’il existe un moyen pour votre code (dans ce cas, vos fonctions de chemin d’accès) de déclarer ce dont il a besoin pour fonctionner et utiliser : « dépendances ». Ensuite, ce système (dans ce cas **FastAPI**) se charge de faire tout le nécessaire pour fournir à votre code ces dépendances requises (« injecter » les dépendances). @@ -37,7 +37,7 @@ C’est tout. **2 lignes**. -Et elle a la même forme et structure que toutes vos fonctions de chemins d’accès. +Et elle a la même forme et structure que toutes vos fonctions de chemin d’accès. Vous pouvez la considérer comme une fonction de chemin d’accès sans le « décorateur » (sans le `@app.get("/some-path")`). @@ -51,7 +51,7 @@ Dans ce cas, cette dépendance attend : Puis elle retourne simplement un `dict` contenant ces valeurs. -/// info +/// note | Remarque FastAPI a ajouté la prise en charge de `Annotated` (et a commencé à le recommander) dans la version 0.95.0. @@ -79,7 +79,7 @@ Ce paramètre doit être quelque chose comme une fonction. Vous ne l’appelez pas directement (n’ajoutez pas de parenthèses à la fin), vous le passez simplement en paramètre à `Depends()`. -Et cette fonction prend des paramètres de la même manière que les fonctions de chemins d’accès. +Et cette fonction prend des paramètres de la même manière que les fonctions de chemin d’accès. /// tip | Astuce @@ -106,7 +106,7 @@ common_parameters --> read_users De cette façon vous écrivez le code partagé une seule fois et **FastAPI** se charge de l’appeler pour vos chemins d’accès. -/// check | Vérifications +/// tip | Astuce Notez que vous n’avez pas à créer une classe spéciale et à la passer quelque part à **FastAPI** pour l’« enregistrer » ou quoi que ce soit de similaire. @@ -142,11 +142,11 @@ Cela sera particulièrement utile lorsque vous l’utiliserez dans une **grande ## Utiliser `async` ou non { #to-async-or-not-to-async } -Comme les dépendances seront aussi appelées par **FastAPI** (tout comme vos fonctions de chemins d’accès), les mêmes règles s’appliquent lors de la définition de vos fonctions. +Comme les dépendances seront aussi appelées par **FastAPI** (tout comme vos fonctions de chemin d’accès), les mêmes règles s’appliquent lors de la définition de vos fonctions. Vous pouvez utiliser `async def` ou un `def` normal. -Et vous pouvez déclarer des dépendances avec `async def` à l’intérieur de fonctions de chemins d’accès `def` normales, ou des dépendances `def` à l’intérieur de fonctions de chemins d’accès `async def`, etc. +Et vous pouvez déclarer des dépendances avec `async def` à l’intérieur de fonctions de chemin d’accès `def` normales, ou des dépendances `def` à l’intérieur de fonctions de chemin d’accès `async def`, etc. Peu importe. **FastAPI** saura quoi faire. @@ -166,7 +166,7 @@ Ainsi, la documentation interactive contiendra aussi toutes les informations iss ## Utilisation simple { #simple-usage } -Si vous y regardez de près, les fonctions de chemins d’accès sont déclarées pour être utilisées chaque fois qu’un « chemin » et une « opération » correspondent, puis **FastAPI** se charge d’appeler la fonction avec les bons paramètres, en extrayant les données de la requête. +Si vous y regardez de près, les fonctions de chemin d’accès sont déclarées pour être utilisées chaque fois qu’un « chemin » et une « opération » correspondent, puis **FastAPI** se charge d’appeler la fonction avec les bons paramètres, en extrayant les données de la requête. En réalité, tous (ou la plupart) des frameworks web fonctionnent de cette manière. @@ -184,7 +184,7 @@ D’autres termes courants pour cette même idée « d’injection de dépendanc ## Plug-ins **FastAPI** { #fastapi-plug-ins } -Les intégrations et « plug-ins » peuvent être construits en utilisant le système d’**injection de dépendances**. Mais en réalité, il n’y a **pas besoin de créer des « plug-ins »**, car en utilisant des dépendances il est possible de déclarer un nombre infini d’intégrations et d’interactions qui deviennent disponibles pour vos fonctions de chemins d’accès. +Les intégrations et « plug-ins » peuvent être construits en utilisant le système d’**injection de dépendances**. Mais en réalité, il n’y a **pas besoin de créer des « plug-ins »**, car en utilisant des dépendances il est possible de déclarer un nombre infini d’intégrations et d’interactions qui deviennent disponibles pour vos fonctions de chemin d’accès. Et les dépendances peuvent être créées de manière très simple et intuitive, ce qui vous permet d’importer juste les packages Python dont vous avez besoin, et de les intégrer à vos fonctions d’API en quelques lignes de code, *littéralement*. diff --git a/docs/fr/docs/tutorial/dependencies/sub-dependencies.md b/docs/fr/docs/tutorial/dependencies/sub-dependencies.md index 473ff02ba..c1ba81630 100644 --- a/docs/fr/docs/tutorial/dependencies/sub-dependencies.md +++ b/docs/fr/docs/tutorial/dependencies/sub-dependencies.md @@ -1,8 +1,8 @@ # Sous-dépendances { #sub-dependencies } -Vous pouvez créer des dépendances qui ont des sous-dépendances. +Vous pouvez créer des dépendances qui ont des **sous-dépendances**. -Elles peuvent être aussi profondes que nécessaire. +Elles peuvent être aussi **profondes** que nécessaire. **FastAPI** se chargera de les résoudre. @@ -35,7 +35,7 @@ Nous pouvons ensuite utiliser la dépendance avec : {* ../../docs_src/dependencies/tutorial005_an_py310.py hl[23] *} -/// info +/// note | Remarque Notez que nous ne déclarons qu'une seule dépendance dans la *fonction de chemin d'accès*, `query_or_cookie_extractor`. diff --git a/docs/fr/docs/tutorial/first-steps.md b/docs/fr/docs/tutorial/first-steps.md index 0a82004d2..3d88fe5a9 100644 --- a/docs/fr/docs/tutorial/first-steps.md +++ b/docs/fr/docs/tutorial/first-steps.md @@ -180,7 +180,7 @@ ce qui équivaudrait à : from backend.main import app ``` -### `fastapi dev` avec un chemin { #fastapi-dev-with-path } +### `fastapi dev` avec un chemin ou avec l’option CLI `--entrypoint` { #fastapi-dev-with-path-or-with-entrypoint-cli-option } Vous pouvez également passer le chemin du fichier à la commande `fastapi dev`, et elle devinera l’objet d’application FastAPI à utiliser : @@ -188,29 +188,19 @@ Vous pouvez également passer le chemin du fichier à la commande `fastapi dev`, $ fastapi dev main.py ``` -Mais vous devrez vous souvenir de passer le chemin correct à chaque exécution de la commande `fastapi`. +Ou bien, vous pouvez aussi passer l’option `--entrypoint` à la commande `fastapi dev` : + +```console +$ fastapi dev --entrypoint main:app +``` + +Mais vous devrez vous souvenir de passer le chemin\entrypoint correct à chaque exécution de la commande `fastapi`. De plus, d’autres outils pourraient ne pas être capables de le trouver, par exemple l’[Extension VS Code](../editor-support.md) ou [FastAPI Cloud](https://fastapicloud.com), il est donc recommandé d’utiliser le `entrypoint` dans `pyproject.toml`. ### Déployer votre application (optionnel) { #deploy-your-app-optional } -Vous pouvez, si vous le souhaitez, déployer votre application FastAPI sur [FastAPI Cloud](https://fastapicloud.com), allez rejoindre la liste d’attente si ce n’est pas déjà fait. 🚀 - -Si vous avez déjà un compte **FastAPI Cloud** (nous vous avons invité depuis la liste d’attente 😉), vous pouvez déployer votre application avec une seule commande. - -Avant de déployer, vous devez vous assurer que vous êtes connecté : - -
- -```console -$ fastapi login - -You are logged in to FastAPI Cloud 🚀 -``` - -
- -Puis déployez votre application : +Vous pouvez éventuellement déployer votre application FastAPI sur [FastAPI Cloud](https://fastapicloud.com) avec une seule commande. 🚀
@@ -226,6 +216,8 @@ Deploying to FastAPI Cloud...
+Le CLI détectera automatiquement votre application FastAPI et la déploiera dans le cloud. Si vous n’êtes pas connecté, votre navigateur s’ouvrira pour terminer le processus d’authentification. + C’est tout ! Vous pouvez maintenant accéder à votre application à cette URL. ✨ ## Récapitulatif, étape par étape { #recap-step-by-step } @@ -270,7 +262,7 @@ https://example.com/items/foo /items/foo ``` -/// info +/// note | Remarque Un « chemin » est aussi couramment appelé « endpoint » ou « route ». @@ -322,7 +314,7 @@ Le `@app.get("/")` indique à **FastAPI** que la fonction juste en dessous est c * le chemin `/` * en utilisant une get opération -/// info | `@decorator` Info +/// note | Informations sur `@decorator` Cette syntaxe `@something` en Python est appelée un « décorateur ». diff --git a/docs/fr/docs/tutorial/metadata.md b/docs/fr/docs/tutorial/metadata.md index 87f72fefa..75a8542f8 100644 --- a/docs/fr/docs/tutorial/metadata.md +++ b/docs/fr/docs/tutorial/metadata.md @@ -74,7 +74,7 @@ Utilisez le paramètre `tags` avec vos *chemins d'accès* (et `APIRouter`s) pour {* ../../docs_src/metadata/tutorial004_py310.py hl[21,26] *} -/// info +/// note | Remarque En savoir plus sur les tags dans [Configuration de chemins d'accès](path-operation-configuration.md#tags). diff --git a/docs/fr/docs/tutorial/path-operation-configuration.md b/docs/fr/docs/tutorial/path-operation-configuration.md index 185adb6dd..572d38e01 100644 --- a/docs/fr/docs/tutorial/path-operation-configuration.md +++ b/docs/fr/docs/tutorial/path-operation-configuration.md @@ -72,13 +72,13 @@ Vous pouvez spécifier la description de la réponse avec le paramètre `respons {* ../../docs_src/path_operation_configuration/tutorial005_py310.py hl[18] *} -/// info +/// note | Remarque Notez que `response_description` se réfère spécifiquement à la réponse, tandis que `description` se réfère au *chemin d'accès* en général. /// -/// check | Vérifications +/// tip | Astuce OpenAPI spécifie que chaque *chemin d'accès* requiert une description de réponse. diff --git a/docs/fr/docs/tutorial/path-params-numeric-validations.md b/docs/fr/docs/tutorial/path-params-numeric-validations.md index b61b42ef7..c308541a1 100644 --- a/docs/fr/docs/tutorial/path-params-numeric-validations.md +++ b/docs/fr/docs/tutorial/path-params-numeric-validations.md @@ -8,7 +8,7 @@ Tout d'abord, importez `Path` de `fastapi`, et importez `Annotated` : {* ../../docs_src/path_params_numeric_validations/tutorial001_an_py310.py hl[1,3] *} -/// info +/// note | Remarque FastAPI a ajouté le support pour `Annotated` (et a commencé à le recommander) dans la version 0.95.0. @@ -131,7 +131,7 @@ Et vous pouvez également déclarer des validations numériques : * `lt` : `l`ess `t`han * `le` : `l`ess than or `e`qual -/// info +/// note | Remarque `Query`, `Path`, et d'autres classes que vous verrez plus tard sont des sous-classes d'une classe commune `Param`. diff --git a/docs/fr/docs/tutorial/path-params.md b/docs/fr/docs/tutorial/path-params.md index f84c4c035..e8d20bb74 100644 --- a/docs/fr/docs/tutorial/path-params.md +++ b/docs/fr/docs/tutorial/path-params.md @@ -20,7 +20,7 @@ Vous pouvez déclarer le type d'un paramètre de chemin dans la fonction, en uti Ici, `item_id` est déclaré comme `int`. -/// check | Vérifications +/// tip | Astuce Cela vous apporte la prise en charge par l'éditeur dans votre fonction, avec vérifications d'erreurs, autocomplétion, etc. @@ -34,7 +34,7 @@ Si vous exécutez cet exemple et ouvrez votre navigateur sur [http://127.0.0.1:8 {"item_id":3} ``` -/// check | Vérifications +/// tip | Astuce Remarquez que la valeur reçue par votre fonction (et renvoyée) est `3`, en tant qu'entier (`int`) Python, pas la chaîne de caractères « 3 ». @@ -66,7 +66,7 @@ car le paramètre de chemin `item_id` a pour valeur « foo », qui n'est pas un La même erreur apparaîtrait si vous fournissiez un `float` au lieu d'un `int`, comme ici : [http://127.0.0.1:8000/items/4.2](http://127.0.0.1:8000/items/4.2) -/// check | Vérifications +/// tip | Astuce Ainsi, avec la même déclaration de type Python, **FastAPI** vous fournit la validation de données. @@ -82,7 +82,7 @@ Et lorsque vous ouvrez votre navigateur sur [http://127.0.0.1:8000/docs](http:// -/// check | Vérifications +/// tip | Astuce À nouveau, simplement avec cette même déclaration de type Python, **FastAPI** vous fournit une documentation interactive automatique (intégrant Swagger UI). diff --git a/docs/fr/docs/tutorial/query-params-str-validations.md b/docs/fr/docs/tutorial/query-params-str-validations.md index 57d358758..fc979334e 100644 --- a/docs/fr/docs/tutorial/query-params-str-validations.md +++ b/docs/fr/docs/tutorial/query-params-str-validations.md @@ -29,7 +29,7 @@ Pour ce faire, importez d’abord : {* ../../docs_src/query_params_str_validations/tutorial002_an_py310.py hl[1,3] *} -/// info +/// note | Remarque FastAPI a ajouté la prise en charge de `Annotated` (et a commencé à le recommander) dans la version 0.95.0. @@ -381,7 +381,7 @@ Par exemple, ce validateur personnalisé vérifie que l’ID d’item commence p {* ../../docs_src/query_params_str_validations/tutorial015_an_py310.py hl[5,16:19,24] *} -/// info +/// note | Remarque C’est disponible avec Pydantic version 2 ou supérieure. 😎 diff --git a/docs/fr/docs/tutorial/query-params.md b/docs/fr/docs/tutorial/query-params.md index 8ecbc2853..cf8474162 100644 --- a/docs/fr/docs/tutorial/query-params.md +++ b/docs/fr/docs/tutorial/query-params.md @@ -65,7 +65,7 @@ De la même façon, vous pouvez déclarer des paramètres de requête optionnels Dans ce cas, le paramètre de fonction `q` sera optionnel et vaudra `None` par défaut. -/// check | Vérifications +/// tip | Astuce Notez également que **FastAPI** est suffisamment intelligent pour remarquer que le paramètre de chemin `item_id` est un paramètre de chemin et que `q` ne l'est pas, c'est donc un paramètre de requête. diff --git a/docs/fr/docs/tutorial/request-files.md b/docs/fr/docs/tutorial/request-files.md index e55f8e57f..591a4e2e9 100644 --- a/docs/fr/docs/tutorial/request-files.md +++ b/docs/fr/docs/tutorial/request-files.md @@ -2,7 +2,7 @@ Vous pouvez définir des fichiers à téléverser par le client en utilisant `File`. -/// info +/// note | Remarque Pour recevoir des fichiers téléversés, installez d'abord [`python-multipart`](https://github.com/Kludex/python-multipart). @@ -28,7 +28,7 @@ Créez des paramètres de fichier de la même manière que pour `Body` ou `Form` {* ../../docs_src/request_files/tutorial001_an_py310.py hl[9] *} -/// info +/// note | Remarque `File` est une classe qui hérite directement de `Form`. @@ -44,7 +44,7 @@ Pour déclarer des fichiers dans le corps de la requête, vous devez utiliser `F Les fichiers seront téléversés en « données de formulaire ». -Si vous déclarez le type de votre paramètre de *fonction de chemin d'accès* comme `bytes`, **FastAPI** lira le fichier pour vous et vous recevrez le contenu sous forme de `bytes`. +Si vous déclarez le type de votre *fonction de chemin d'accès* comme `bytes`, **FastAPI** lira le fichier pour vous et vous recevrez le contenu sous forme de `bytes`. Gardez à l'esprit que cela signifie que tout le contenu sera stocké en mémoire. Cela fonctionnera bien pour de petits fichiers. diff --git a/docs/fr/docs/tutorial/request-form-models.md b/docs/fr/docs/tutorial/request-form-models.md index 0f1e6dcfd..ae1da248d 100644 --- a/docs/fr/docs/tutorial/request-form-models.md +++ b/docs/fr/docs/tutorial/request-form-models.md @@ -2,7 +2,7 @@ Vous pouvez utiliser des **modèles Pydantic** pour déclarer des **champs de formulaire** dans FastAPI. -/// info +/// note | Remarque Pour utiliser les formulaires, installez d'abord [`python-multipart`](https://github.com/Kludex/python-multipart). diff --git a/docs/fr/docs/tutorial/request-forms-and-files.md b/docs/fr/docs/tutorial/request-forms-and-files.md index 2e3f5b58b..4b930dea2 100644 --- a/docs/fr/docs/tutorial/request-forms-and-files.md +++ b/docs/fr/docs/tutorial/request-forms-and-files.md @@ -2,7 +2,7 @@ Vous pouvez définir des fichiers et des champs de formulaire en même temps à l'aide de `File` et `Form`. -/// info +/// note | Remarque Pour recevoir des fichiers téléversés et/ou des données de formulaire, installez d'abord [`python-multipart`](https://github.com/Kludex/python-multipart). diff --git a/docs/fr/docs/tutorial/request-forms.md b/docs/fr/docs/tutorial/request-forms.md index 9596f68ce..bdc8c6fb0 100644 --- a/docs/fr/docs/tutorial/request-forms.md +++ b/docs/fr/docs/tutorial/request-forms.md @@ -2,11 +2,11 @@ Lorsque vous devez recevoir des champs de formulaire au lieu de JSON, vous pouvez utiliser `Form`. -/// info +/// note | Remarque Pour utiliser les formulaires, installez d'abord [`python-multipart`](https://github.com/Kludex/python-multipart). -Assurez-vous de créer un [environnement virtuel](../virtual-environments.md), de l'activer, puis installez-le, par exemple : +Vous devez créer un [environnement virtuel](../virtual-environments.md), l'activer, puis installer le paquet, par exemple : ```console $ pip install python-multipart @@ -32,7 +32,7 @@ La spécification exige que les champs soient Avec `Form`, vous pouvez déclarer les mêmes configurations que pour `Body` (ainsi que `Query`, `Path`, `Cookie`), y compris la validation, des exemples, un alias (p. ex. `user-name` au lieu de `username`), etc. -/// info +/// note | Remarque `Form` est une classe qui hérite directement de `Body`. diff --git a/docs/fr/docs/tutorial/response-model.md b/docs/fr/docs/tutorial/response-model.md index e3926a0c1..322b17044 100644 --- a/docs/fr/docs/tutorial/response-model.md +++ b/docs/fr/docs/tutorial/response-model.md @@ -72,7 +72,7 @@ Ici, nous déclarons un modèle `UserIn`, il contiendra un mot de passe en clair {* ../../docs_src/response_model/tutorial002_py310.py hl[7,9] *} -/// info | Info +/// note | Remarque Pour utiliser `EmailStr`, installez d'abord [`email-validator`](https://github.com/JoshData/python-email-validator). @@ -251,7 +251,7 @@ Ainsi, si vous envoyez une requête à ce *chemin d'accès* pour l'article avec } ``` -/// info | Info +/// note | Remarque Vous pouvez également utiliser : diff --git a/docs/fr/docs/tutorial/response-status-code.md b/docs/fr/docs/tutorial/response-status-code.md index c8e45cd40..e4a666ebf 100644 --- a/docs/fr/docs/tutorial/response-status-code.md +++ b/docs/fr/docs/tutorial/response-status-code.md @@ -18,7 +18,7 @@ Remarquez que `status_code` est un paramètre de la méthode « decorator » (`g Le paramètre `status_code` reçoit un nombre correspondant au code d'état HTTP. -/// info +/// note | Remarque `status_code` peut aussi recevoir un `IntEnum`, comme le [`http.HTTPStatus`](https://docs.python.org/3/library/http.html#http.HTTPStatus) de Python. diff --git a/docs/fr/docs/tutorial/schema-extra-example.md b/docs/fr/docs/tutorial/schema-extra-example.md index 404edff46..6f254aafe 100644 --- a/docs/fr/docs/tutorial/schema-extra-example.md +++ b/docs/fr/docs/tutorial/schema-extra-example.md @@ -24,7 +24,7 @@ Par exemple, vous pourriez l'utiliser pour ajouter des métadonnées pour une in /// -/// info +/// note | Remarque OpenAPI 3.1.0 (utilisé depuis FastAPI 0.99.0) a ajouté la prise en charge de `examples`, qui fait partie du standard **JSON Schema**. @@ -155,7 +155,7 @@ OpenAPI a également ajouté les champs `example` et `examples` à d'autres part * `File()` * `Form()` -/// info +/// note | Remarque Ce paramètre `examples` ancien et spécifique à OpenAPI est désormais `openapi_examples` depuis FastAPI `0.103.0`. @@ -171,7 +171,7 @@ Et désormais, ce nouveau champ `examples` a priorité sur l'ancien champ unique Ce nouveau champ `examples` dans JSON Schema est **juste une `list`** d'exemples, et non pas un dict avec des métadonnées supplémentaires comme dans les autres endroits d'OpenAPI (décrits ci-dessus). -/// info +/// note | Remarque Même après la sortie d'OpenAPI 3.1.0 avec cette nouvelle intégration plus simple avec JSON Schema, pendant un temps, Swagger UI, l'outil qui fournit la documentation automatique, ne prenait pas en charge OpenAPI 3.1.0 (il le fait depuis la version 5.0.0 🎉). diff --git a/docs/fr/docs/tutorial/security/first-steps.md b/docs/fr/docs/tutorial/security/first-steps.md index c1d36d501..73cf4f38c 100644 --- a/docs/fr/docs/tutorial/security/first-steps.md +++ b/docs/fr/docs/tutorial/security/first-steps.md @@ -24,7 +24,7 @@ Copiez l'exemple dans un fichier `main.py` : ## Exécuter { #run-it } -/// info +/// note | Remarque Le package [`python-multipart`](https://github.com/Kludex/python-multipart) est installé automatiquement avec **FastAPI** lorsque vous exécutez la commande `pip install "fastapi[standard]"`. @@ -60,7 +60,7 @@ Vous verrez quelque chose comme ceci : -/// check | Bouton « Authorize » ! +/// tip | Bouton « Authorize » ! Vous avez déjà un tout nouveau bouton « Authorize ». @@ -118,7 +118,7 @@ Voyons cela selon ce point de vue simplifié : Dans cet exemple, nous allons utiliser **OAuth2**, avec le flux **Password**, en utilisant un token **Bearer**. Nous le faisons avec la classe `OAuth2PasswordBearer`. -/// info +/// note | Remarque Un token « bearer » n'est pas la seule option. @@ -148,7 +148,7 @@ Ce paramètre ne crée pas cet endpoint / *chemin d'accès*, mais déclare que l Nous créerons bientôt aussi le véritable chemin d'accès. -/// info +/// note | Remarque Si vous êtes un « Pythonista » très strict, vous pourriez ne pas apprécier le style du nom de paramètre `tokenUrl` au lieu de `token_url`. @@ -176,7 +176,7 @@ Cette dépendance fournira une `str` qui est affectée au paramètre `token` de **FastAPI** saura qu'il peut utiliser cette dépendance pour définir un « schéma de sécurité » dans le schéma OpenAPI (et la documentation API automatique). -/// info | Détails techniques +/// note | Détails techniques **FastAPI** saura qu'il peut utiliser la classe `OAuth2PasswordBearer` (déclarée dans une dépendance) pour définir le schéma de sécurité dans OpenAPI parce qu'elle hérite de `fastapi.security.oauth2.OAuth2`, qui hérite à son tour de `fastapi.security.base.SecurityBase`. diff --git a/docs/fr/docs/tutorial/security/get-current-user.md b/docs/fr/docs/tutorial/security/get-current-user.md index 5f73efea9..97cffc666 100644 --- a/docs/fr/docs/tutorial/security/get-current-user.md +++ b/docs/fr/docs/tutorial/security/get-current-user.md @@ -52,7 +52,7 @@ Ici, **FastAPI** ne s'y trompera pas car vous utilisez `Depends`. /// -/// check | Vérifications +/// tip | Astuce La manière dont ce système de dépendances est conçu nous permet d'avoir différentes dépendances (différents « dependables ») qui retournent toutes un modèle `User`. diff --git a/docs/fr/docs/tutorial/security/oauth2-jwt.md b/docs/fr/docs/tutorial/security/oauth2-jwt.md index eec5ab13c..810f1eef1 100644 --- a/docs/fr/docs/tutorial/security/oauth2-jwt.md +++ b/docs/fr/docs/tutorial/security/oauth2-jwt.md @@ -42,7 +42,7 @@ $ pip install pyjwt -/// info +/// note | Remarque Si vous prévoyez d'utiliser des algorithmes de signature numérique comme RSA ou ECDSA, vous devez installer la dépendance de bibliothèque de cryptographie `pyjwt[crypto]`. @@ -213,7 +213,7 @@ En utilisant les identifiants : Nom d'utilisateur : `johndoe` Mot de passe : `secret` -/// check | Vérifications +/// tip | Astuce Remarquez qu'à aucun endroit du code le mot de passe en clair « secret » n'apparaît, nous n'avons que la version hachée. diff --git a/docs/fr/docs/tutorial/security/simple-oauth2.md b/docs/fr/docs/tutorial/security/simple-oauth2.md index f47d94aa2..b0f974f0d 100644 --- a/docs/fr/docs/tutorial/security/simple-oauth2.md +++ b/docs/fr/docs/tutorial/security/simple-oauth2.md @@ -32,7 +32,7 @@ Ils sont normalement utilisés pour déclarer des permissions de sécurité spé * `instagram_basic` est utilisé par Facebook / Instagram. * `https://www.googleapis.com/auth/drive` est utilisé par Google. -/// info +/// note | Remarque En OAuth2, un « scope » est simplement une chaîne qui déclare une permission spécifique requise. @@ -72,7 +72,7 @@ Si vous avez besoin de l'imposer, utilisez `OAuth2PasswordRequestFormStrict` au * Un `client_id` optionnel (nous n'en avons pas besoin pour notre exemple). * Un `client_secret` optionnel (nous n'en avons pas besoin pour notre exemple). -/// info +/// note | Remarque La classe `OAuth2PasswordRequestForm` n'est pas une classe spéciale pour **FastAPI** comme l'est `OAuth2PasswordBearer`. @@ -144,7 +144,7 @@ UserInDB( ) ``` -/// info +/// note | Remarque Pour une explication plus complète de `**user_dict`, consultez [la documentation pour **Modèles supplémentaires**](../extra-models.md#about-user-in-dict). @@ -196,7 +196,7 @@ Ainsi, dans notre endpoint, nous n'obtiendrons un utilisateur que si l'utilisate {* ../../docs_src/security/tutorial003_an_py310.py hl[58:66,69:74,94] *} -/// info +/// note | Remarque L'en‑tête supplémentaire `WWW-Authenticate` avec la valeur `Bearer` que nous renvoyons ici fait également partie de la spécification. diff --git a/docs/fr/docs/tutorial/server-sent-events.md b/docs/fr/docs/tutorial/server-sent-events.md index f4ed506f6..d62e3bfa7 100644 --- a/docs/fr/docs/tutorial/server-sent-events.md +++ b/docs/fr/docs/tutorial/server-sent-events.md @@ -4,7 +4,7 @@ Vous pouvez diffuser des données vers le client en utilisant les **Server-Sent C'est similaire à [Diffuser des JSON Lines](stream-json-lines.md), mais cela utilise le format `text/event-stream`, pris en charge nativement par les navigateurs via l’API [`EventSource`](https://developer.mozilla.org/en-US/docs/Web/API/EventSource). -/// info | Info +/// note | Remarque Ajouté dans FastAPI 0.135.0. diff --git a/docs/fr/docs/tutorial/stream-json-lines.md b/docs/fr/docs/tutorial/stream-json-lines.md index aed0205cb..c06c0e006 100644 --- a/docs/fr/docs/tutorial/stream-json-lines.md +++ b/docs/fr/docs/tutorial/stream-json-lines.md @@ -1,8 +1,8 @@ # Diffuser des JSON Lines { #stream-json-lines } -Vous pouvez avoir une séquence de données que vous souhaitez envoyer en « flux » ; vous pouvez le faire avec « JSON Lines ». +Vous pouvez avoir une séquence de données que vous souhaitez envoyer en « flux », vous pouvez le faire avec « JSON Lines ». -/// info +/// note | Remarque Ajouté dans FastAPI 0.134.0. @@ -48,7 +48,7 @@ Une réponse aurait un type de contenu `application/jsonl` (au lieu de `applicat C'est très similaire à un tableau JSON (équivalent d'une liste Python), mais au lieu d'être entouré de `[]` et d'avoir des `,` entre les éléments, il y a un objet JSON par ligne, ils sont séparés par un caractère de saut de ligne. -/// info +/// note | Remarque Le point important est que votre application pourra produire chaque ligne à son tour, tandis que le client consomme les lignes précédentes. diff --git a/docs/fr/docs/tutorial/testing.md b/docs/fr/docs/tutorial/testing.md index 5cb2ee629..517603425 100644 --- a/docs/fr/docs/tutorial/testing.md +++ b/docs/fr/docs/tutorial/testing.md @@ -8,7 +8,7 @@ Avec cela, vous pouvez utiliser [pytest](https://docs.pytest.org/) directement a ## Utiliser `TestClient` { #using-testclient } -/// info +/// note | Remarque Pour utiliser `TestClient`, installez d’abord [`httpx`](https://www.python-httpx.org). @@ -144,7 +144,7 @@ Par exemple : Pour plus d’informations sur la manière de transmettre des données au backend (en utilisant `httpx` ou le `TestClient`), consultez la [documentation HTTPX](https://www.python-httpx.org). -/// info +/// note | Remarque Notez que le `TestClient` reçoit des données qui peuvent être converties en JSON, pas des modèles Pydantic.