🌐 Update translations for fr (update-outdated) (#15761)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
This commit is contained in:
Sebastián Ramírez
2026-06-16 00:10:59 +02:00
committed by GitHub
parent b401cb71c0
commit aeeb29f6d0
54 changed files with 151 additions and 165 deletions

View File

@@ -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`).

View File

@@ -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 darrêt après `yield` sexé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 darrêt après `yield` sexécute après lenvoi de la réponse.
/// info
/// note | Remarque
Comme vous le verrez cidessous, cest très similaire au comportement avant la version 0.106.0, mais avec plusieurs améliorations et corrections de bogues pour des cas limites.

View File

@@ -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é.

View File

@@ -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.

View File

@@ -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/).

View File

@@ -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. Dautres générateurs de SDK commerciaux existent et peuvent être trouvés en ligne. 🤓

View File

@@ -167,13 +167,13 @@ Remarquez que lURL de callback utilisée contient lURL 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 lattribut `.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 lattribut `.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 lattribut `.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.
///

View File

@@ -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** :
<img src="/img/tutorial/openapi-webhooks/image01.png">

View File

@@ -16,17 +16,11 @@ Vous devez vous assurer quil est unique pour chaque opération.
### Utiliser le nom de la fonction de chemin daccè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 daccè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 daccès.
Cette fonction reçoit chaque `APIRoute` et renvoie l`operationId` à utiliser pour ce chemin daccè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

View File

@@ -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`.

View File

@@ -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 na quun paramètre supplémentaire que nous verrons plus tard.

View File

@@ -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.

View File

@@ -81,7 +81,7 @@ Si vous devez prendre en charge des clients qui nenvoient pas den-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.

View File

@@ -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`.

View File

@@ -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`.

View File

@@ -132,7 +132,7 @@ Successfully installed fastapi pydantic
</div>
/// 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/).

View File

@@ -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 dattente si ce nest 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 dattente 😉).
Connectez-vous ensuite :
<div class="termy">
```console
$ fastapi login
You are logged in to FastAPI Cloud 🚀
```
</div>
## 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**. 🚀
<div class="termy">
@@ -36,6 +16,8 @@ Deploying to FastAPI Cloud...
</div>
La CLI détecte automatiquement votre application FastAPI et la déploie dans le cloud. Si vous nêtes pas connecté, votre navigateur souvrira pour terminer le processus dauthentification.
Cest 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. 🤓

View File

@@ -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 }

View File

@@ -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).

View File

@@ -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.

View File

@@ -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`. 🤓

View File

@@ -143,7 +143,7 @@ Les principales fonctionnalités sont :
---
« _Si quelquun 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 quelquun 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._ »
<div style="text-align: right; margin-right: 10%;">Deon Pillsbury - <strong>Cisco</strong> <a href="https://www.linkedin.com/posts/deonpillsbury_cisco-cx-python-activity-6963242628536487936-trAp/"><small>(ref)</small></a></div>
@@ -492,9 +492,7 @@ Pour un exemple plus complet comprenant plus de fonctionnalités, voir le <a hre
### 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 vous inscrire sur 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.
Vous pouvez, si vous le souhaitez, déployer votre application FastAPI sur [FastAPI Cloud](https://fastapicloud.com) avec une seule commande. 🚀
<div class="termy">
@@ -510,6 +508,8 @@ Deploying to FastAPI Cloud...
</div>
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 }

View File

@@ -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.
///

View File

@@ -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 :

View File

@@ -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`.

View File

@@ -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`.

View File

@@ -32,7 +32,7 @@ Vous pouvez voir les cookies définis dans l'interface de la documentation à `/
<img src="/img/tutorial/cookie-param-models/image01.png">
</div>
/// 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.

View File

@@ -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.

View File

@@ -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).

View File

@@ -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`.

View File

@@ -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*.

View File

@@ -6,7 +6,7 @@ Il est conçu pour être très simple à utiliser, et pour faciliter lintégr
## Quest-ce que « linjection de dépendances » { #what-is-dependency-injection }
L**« injection de dépendances »** signifie, en programmation, quil existe un moyen pour votre code (dans ce cas, vos fonctions de chemins daccès) de déclarer ce dont il a besoin pour fonctionner et utiliser : « dépendances ».
L**« injection de dépendances »** signifie, en programmation, quil existe un moyen pour votre code (dans ce cas, vos fonctions de chemin daccè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 @@ Cest tout.
**2 lignes**.
Et elle a la même forme et structure que toutes vos fonctions de chemins daccès.
Et elle a la même forme et structure que toutes vos fonctions de chemin daccès.
Vous pouvez la considérer comme une fonction de chemin daccè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 lappelez pas directement (najoutez 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 daccès.
Et cette fonction prend des paramètres de la même manière que les fonctions de chemin daccè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 lappeler pour vos chemins daccès.
/// check | Vérifications
/// tip | Astuce
Notez que vous navez 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 lutiliserez 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 daccès), les mêmes règles sappliquent lors de la définition de vos fonctions.
Comme les dépendances seront aussi appelées par **FastAPI** (tout comme vos fonctions de chemin daccès), les mêmes règles sappliquent 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` à lintérieur de fonctions de chemins daccès `def` normales, ou des dépendances `def` à lintérieur de fonctions de chemins daccès `async def`, etc.
Et vous pouvez déclarer des dépendances avec `async def` à lintérieur de fonctions de chemin daccès `def` normales, ou des dépendances `def` à lintérieur de fonctions de chemin daccè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 daccès sont déclarées pour être utilisées chaque fois quun « chemin » et une « opération » correspondent, puis **FastAPI** se charge dappeler 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 daccès sont déclarées pour être utilisées chaque fois quun « chemin » et une « opération » correspondent, puis **FastAPI** se charge dappeler 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 @@ Dautres termes courants pour cette même idée « dinjection 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 ny a **pas besoin de créer des « plug-ins »**, car en utilisant des dépendances il est possible de déclarer un nombre infini dintégrations et dinteractions qui deviennent disponibles pour vos fonctions de chemins daccè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 ny a **pas besoin de créer des « plug-ins »**, car en utilisant des dépendances il est possible de déclarer un nombre infini dintégrations et dinteractions qui deviennent disponibles pour vos fonctions de chemin daccès.
Et les dépendances peuvent être créées de manière très simple et intuitive, ce qui vous permet dimporter juste les packages Python dont vous avez besoin, et de les intégrer à vos fonctions dAPI en quelques lignes de code, *littéralement*.

View File

@@ -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`.

View File

@@ -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 loption 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 lobjet dapplication 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 loption `--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, dautres 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é dutiliser 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 dattente si ce nest pas déjà fait. 🚀
Si vous avez déjà un compte **FastAPI Cloud** (nous vous avons invité depuis la liste dattente 😉), vous pouvez déployer votre application avec une seule commande.
Avant de déployer, vous devez vous assurer que vous êtes connecté :
<div class="termy">
```console
$ fastapi login
You are logged in to FastAPI Cloud 🚀
```
</div>
Puis déployez votre application :
Vous pouvez éventuellement déployer votre application FastAPI sur [FastAPI Cloud](https://fastapicloud.com) avec une seule commande. 🚀
<div class="termy">
@@ -226,6 +216,8 @@ Deploying to FastAPI Cloud...
</div>
Le CLI détectera automatiquement votre application FastAPI et la déploiera dans le cloud. Si vous nêtes pas connecté, votre navigateur souvrira pour terminer le processus dauthentification.
Cest 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 <dfn title="une méthode HTTP GET"><code>get</code> opération</dfn>
/// info | `@decorator` Info
/// note | Informations sur `@decorator`
Cette syntaxe `@something` en Python est appelée un « décorateur ».

View File

@@ -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).

View File

@@ -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.

View File

@@ -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`.

View File

@@ -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://
<img src="/img/tutorial/path-params/image01.png">
/// 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).

View File

@@ -29,7 +29,7 @@ Pour ce faire, importez dabord :
{* ../../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 lID ditem commence p
{* ../../docs_src/query_params_str_validations/tutorial015_an_py310.py hl[5,16:19,24] *}
/// info
/// note | Remarque
Cest disponible avec Pydantic version 2 ou supérieure. 😎

View File

@@ -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.

View File

@@ -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.

View File

@@ -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).

View File

@@ -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).

View File

@@ -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 <dfn title="spécification">spécification</dfn> 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`.

View File

@@ -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 :

View File

@@ -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.

View File

@@ -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 🎉).

View File

@@ -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 :
<img src="/img/tutorial/security/image01.png">
/// 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`.

View File

@@ -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`.

View File

@@ -42,7 +42,7 @@ $ pip install pyjwt
</div>
/// 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.

View File

@@ -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'entête supplémentaire `WWW-Authenticate` avec la valeur `Bearer` que nous renvoyons ici fait également partie de la spécification.

View File

@@ -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 lAPI [`EventSource`](https://developer.mozilla.org/en-US/docs/Web/API/EventSource).
/// info | Info
/// note | Remarque
Ajouté dans FastAPI 0.135.0.

View File

@@ -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.

View File

@@ -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 dabord [`httpx`](https://www.python-httpx.org).
@@ -144,7 +144,7 @@ Par exemple :
Pour plus dinformations 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.