diff --git a/docs/fr/docs/advanced/additional-responses.md b/docs/fr/docs/advanced/additional-responses.md
index bcf562f30..bd776c370 100644
--- a/docs/fr/docs/advanced/additional-responses.md
+++ b/docs/fr/docs/advanced/additional-responses.md
@@ -24,7 +24,7 @@ Chacun de ces `dict` de réponse peut avoir une clé `model`, contenant un modè
**FastAPI** prendra ce modèle, générera son schéma JSON et l'inclura au bon endroit dans OpenAPI.
-Par exemple, pour déclarer une autre réponse avec un code HTTP `404` et un modèle Pydantic `Message`, vous pouvez écrire :
+Par exemple, pour déclarer une autre réponse avec un code HTTP `404` et un modèle Pydantic `Message`, vous pouvez écrire :
{* ../../docs_src/additional_responses/tutorial001_py310.py hl[18,22] *}
@@ -42,14 +42,14 @@ La clé `model` ne fait pas partie d'OpenAPI.
Le bon endroit est :
-* Dans la clé `content`, qui a pour valeur un autre objet JSON (`dict`) qui contient :
- * Une clé avec le type de support, par ex. `application/json`, qui contient comme valeur un autre objet JSON, qui contient :
+* Dans la clé `content`, qui a pour valeur un autre objet JSON (`dict`) qui contient :
+ * Une clé avec le type de support, par ex. `application/json`, qui contient comme valeur un autre objet JSON, qui contient :
* Une clé `schema`, qui a pour valeur le schéma JSON du modèle, voici le bon endroit.
* **FastAPI** ajoute ici une référence aux schémas JSON globaux à un autre endroit de votre OpenAPI au lieu de l'inclure directement. De cette façon, d'autres applications et clients peuvent utiliser ces schémas JSON directement, fournir de meilleurs outils de génération de code, etc.
///
-Les réponses générées au format OpenAPI pour ce *chemin d'accès* seront :
+Les réponses générées au format OpenAPI pour ce *chemin d'accès* seront :
```JSON hl_lines="3-12"
{
@@ -88,7 +88,7 @@ Les réponses générées au format OpenAPI pour ce *chemin d'accès* seront :
}
```
-Les schémas sont référencés à un autre endroit du modèle OpenAPI :
+Les schémas sont référencés à un autre endroit du modèle OpenAPI :
```JSON hl_lines="4-16"
{
@@ -173,7 +173,7 @@ Les schémas sont référencés à un autre endroit du modèle OpenAPI :
Vous pouvez utiliser ce même paramètre `responses` pour ajouter différents types de médias pour la même réponse principale.
-Par exemple, vous pouvez ajouter un type de média supplémentaire `image/png`, en déclarant que votre *chemin d'accès* peut renvoyer un objet JSON (avec le type de média `application/json`) ou une image PNG :
+Par exemple, vous pouvez ajouter un type de média supplémentaire `image/png`, en déclarant que votre *chemin d'accès* peut renvoyer un objet JSON (avec le type de média `application/json`) ou une image PNG :
{* ../../docs_src/additional_responses/tutorial002_py310.py hl[17:22,26] *}
@@ -201,19 +201,19 @@ Vous pouvez déclarer un `response_model`, en utilisant le code HTTP par défaut
Par exemple, vous pouvez déclarer une réponse avec un code HTTP `404` qui utilise un modèle Pydantic et a une `description` personnalisée.
-Et une réponse avec un code HTTP `200` qui utilise votre `response_model`, mais inclut un `example` personnalisé :
+Et une réponse avec un code HTTP `200` qui utilise votre `response_model`, mais inclut un `example` personnalisé :
{* ../../docs_src/additional_responses/tutorial003_py310.py hl[20:31] *}
-Tout sera combiné et inclus dans votre OpenAPI, et affiché dans la documentation de l'API :
+Tout sera combiné et inclus dans votre OpenAPI, et affiché dans la documentation de l'API :
-## Combinez les réponses prédéfinies et les réponses personnalisées { #combine-predefined-responses-and-custom-ones }
+## Combiner les réponses prédéfinies et les réponses personnalisées { #combine-predefined-responses-and-custom-ones }
Vous voulez peut-être avoir des réponses prédéfinies qui s'appliquent à de nombreux *chemins d'accès*, mais vous souhaitez les combiner avec des réponses personnalisées nécessaires à chaque *chemin d'accès*.
-Dans ces cas, vous pouvez utiliser la technique Python « unpacking » d'un `dict` avec `**dict_to_unpack` :
+Dans ces cas, vous pouvez utiliser la technique Python « unpacking » d'un `dict` avec `**dict_to_unpack` :
```Python
old_dict = {
@@ -223,7 +223,7 @@ old_dict = {
new_dict = {**old_dict, "new key": "new value"}
```
-Ici, `new_dict` contiendra toutes les paires clé-valeur de `old_dict` plus la nouvelle paire clé-valeur :
+Ici, `new_dict` contiendra toutes les paires clé-valeur de `old_dict` plus la nouvelle paire clé-valeur :
```Python
{
@@ -235,13 +235,13 @@ Ici, `new_dict` contiendra toutes les paires clé-valeur de `old_dict` plus la n
Vous pouvez utiliser cette technique pour réutiliser certaines réponses prédéfinies dans vos *chemins d'accès* et les combiner avec des réponses personnalisées supplémentaires.
-Par exemple:
+Par exemple :
{* ../../docs_src/additional_responses/tutorial004_py310.py hl[11:15,24] *}
## Plus d'informations sur les réponses OpenAPI { #more-information-about-openapi-responses }
-Pour voir exactement ce que vous pouvez inclure dans les réponses, vous pouvez consulter ces sections dans la spécification OpenAPI :
+Pour voir exactement ce que vous pouvez inclure dans les réponses, vous pouvez consulter ces sections dans la spécification OpenAPI :
-* [Objet Responses de OpenAPI](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#responses-object), il inclut le `Response Object`.
-* [Objet Response de OpenAPI](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#response-object), vous pouvez inclure n'importe quoi directement dans chaque réponse à l'intérieur de votre paramètre `responses`. Y compris `description`, `headers`, `content` (à l'intérieur de cela, vous déclarez différents types de médias et schémas JSON) et `links`.
+* [Objet Responses de OpenAPI](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#responses-object), il inclut le `Response Object`.
+* [Objet Response de OpenAPI](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#response-object), vous pouvez inclure n'importe quoi directement dans chaque réponse à l'intérieur de votre paramètre `responses`. Y compris `description`, `headers`, `content` (à l'intérieur de cela, vous déclarez différents types de médias et schémas JSON) et `links`.
diff --git a/docs/fr/docs/advanced/async-tests.md b/docs/fr/docs/advanced/async-tests.md
index a59d651ba..13c0aeacc 100644
--- a/docs/fr/docs/advanced/async-tests.md
+++ b/docs/fr/docs/advanced/async-tests.md
@@ -45,7 +45,7 @@ Vous pouvez lancer vos tests comme d'habitude via :
@@ -74,7 +74,7 @@ Dans ce cas, vous pouvez simplement remplacer les `dataclasses` standard par `py
Comme toujours, avec FastAPI vous pouvez combiner `def` et `async def` selon vos besoins.
- Si vous avez besoin d'un rappel sur quand utiliser l'un ou l'autre, consultez la section _« In a hurry? »_ dans la documentation à propos de [`async` et `await`](../async.md#in-a-hurry).
+ Si vous avez besoin d'un rappel sur quand utiliser l'un ou l'autre, consultez la section _« Vous êtes pressé ? »_ dans les documents à propos de [`async` et `await`](../async.md#in-a-hurry).
9. Cette *fonction de chemin d'accès* ne renvoie pas des dataclasses (même si elle le pourrait), mais une liste de dictionnaires contenant des données internes.
@@ -82,13 +82,13 @@ Dans ce cas, vous pouvez simplement remplacer les `dataclasses` standard par `py
Vous pouvez combiner `dataclasses` avec d'autres annotations de type, selon de nombreuses combinaisons, pour former des structures de données complexes.
-Reportez‑vous aux annotations dans le code ci‑dessus pour voir plus de détails spécifiques.
+Reportez‑vous aux astuces d'annotation dans le code ci‑dessus pour voir plus de détails spécifiques.
## En savoir plus { #learn-more }
Vous pouvez aussi combiner `dataclasses` avec d'autres modèles Pydantic, en hériter, les inclure dans vos propres modèles, etc.
-Pour en savoir plus, consultez la [documentation Pydantic sur les dataclasses](https://docs.pydantic.dev/latest/concepts/dataclasses/).
+Pour en savoir plus, consultez les [documents Pydantic sur les dataclasses](https://pydantic.dev/docs/validation/latest/concepts/dataclasses/).
## Version { #version }
diff --git a/docs/fr/docs/advanced/events.md b/docs/fr/docs/advanced/events.md
index 4ab175239..c936c622c 100644
--- a/docs/fr/docs/advanced/events.md
+++ b/docs/fr/docs/advanced/events.md
@@ -154,7 +154,7 @@ Sous le capot, dans la spécification technique ASGI, cela fait partie du [proto
/// note | Remarque
-Vous pouvez en lire plus sur les gestionnaires `lifespan` de Starlette dans la [documentation « Lifespan » de Starlette](https://www.starlette.dev/lifespan/).
+Vous pouvez en lire plus sur les gestionnaires `lifespan` de Starlette dans les [documents « Lifespan » de Starlette](https://starlette.dev/lifespan/).
Y compris comment gérer l'état de cycle de vie qui peut être utilisé dans d'autres parties de votre code.
diff --git a/docs/fr/docs/advanced/generate-clients.md b/docs/fr/docs/advanced/generate-clients.md
index 7aa0a5150..f831d70c3 100644
--- a/docs/fr/docs/advanced/generate-clients.md
+++ b/docs/fr/docs/advanced/generate-clients.md
@@ -12,7 +12,7 @@ Une option polyvalente est le [OpenAPI Generator](https://openapi-generator.tech
Pour les **clients TypeScript**, [Hey API](https://heyapi.dev/) est une solution dédiée, offrant une expérience optimisée pour l’écosystème TypeScript.
-Vous pouvez découvrir davantage de générateurs de SDK sur [OpenAPI.Tools](https://openapi.tools/#sdk).
+Vous pouvez découvrir davantage de générateurs de SDK sur [OpenAPI.Tools](https://openapi.tools/categories/sdk-generators).
/// tip | Astuce
diff --git a/docs/fr/docs/advanced/middleware.md b/docs/fr/docs/advanced/middleware.md
index 15de9872f..b7c0e75d4 100644
--- a/docs/fr/docs/advanced/middleware.md
+++ b/docs/fr/docs/advanced/middleware.md
@@ -14,7 +14,7 @@ Un middleware n'a pas besoin d'être conçu pour FastAPI ou Starlette pour fonct
En général, les middlewares ASGI sont des classes qui s'attendent à recevoir une application ASGI en premier argument.
-Ainsi, dans la documentation de middlewares ASGI tiers, on vous indiquera probablement de faire quelque chose comme :
+Ainsi, dans la documentation de middlewares ASGI tiers, on vous indiquera probablement de faire quelque chose comme :
```Python
from unicorn import UnicornMiddleware
@@ -65,10 +65,10 @@ Impose que toutes les requêtes entrantes aient un en-tête `Host` correctement
{* ../../docs_src/advanced_middleware/tutorial002_py310.py hl[2,6:8] *}
-Les arguments suivants sont pris en charge :
+Les arguments suivants sont pris en charge :
-- `allowed_hosts` - Une liste de noms de domaine autorisés comme noms d'hôte. Les domaines génériques tels que `*.example.com` sont pris en charge pour faire correspondre les sous-domaines. Pour autoriser n'importe quel nom d'hôte, utilisez `allowed_hosts=["*"]` ou omettez le middleware.
-- `www_redirect` - Si défini à `True`, les requêtes vers les versions sans www des hôtes autorisés seront redirigées vers leurs équivalents avec www. Valeur par défaut : `True`.
+* `allowed_hosts` - Une liste de noms de domaine autorisés comme noms d'hôte. Les domaines génériques tels que `*.example.com` sont pris en charge pour faire correspondre les sous-domaines. Pour autoriser n'importe quel nom d'hôte, utilisez `allowed_hosts=["*"]` ou omettez le middleware.
+* `www_redirect` - Si défini à True, les requêtes vers les versions sans www des hôtes autorisés seront redirigées vers leurs équivalents avec www. Valeur par défaut : `True`.
Si une requête entrante n'est pas valide, une réponse `400` sera envoyée.
@@ -80,18 +80,18 @@ Le middleware gérera les réponses standard et en streaming.
{* ../../docs_src/advanced_middleware/tutorial003_py310.py hl[2,6] *}
-Les arguments suivants sont pris en charge :
+Les arguments suivants sont pris en charge :
-- `minimum_size` - Ne pas compresser en GZip les réponses dont la taille est inférieure à ce minimum en octets. Valeur par défaut : `500`.
-- `compresslevel` - Utilisé pendant la compression GZip. Entier compris entre 1 et 9. Valeur par défaut : `9`. Une valeur plus faible entraîne une compression plus rapide mais des fichiers plus volumineux, tandis qu'une valeur plus élevée entraîne une compression plus lente mais des fichiers plus petits.
+* `minimum_size` - Ne pas compresser en GZip les réponses dont la taille est inférieure à ce minimum en octets. Valeur par défaut : `500`.
+* `compresslevel` - Utilisé pendant la compression GZip. Entier compris entre 1 et 9. Valeur par défaut : `9`. Une valeur plus faible entraîne une compression plus rapide mais des fichiers plus volumineux, tandis qu'une valeur plus élevée entraîne une compression plus lente mais des fichiers plus petits.
## Autres middlewares { #other-middlewares }
Il existe de nombreux autres middlewares ASGI.
-Par exemple :
+Par exemple :
-- [Le `ProxyHeadersMiddleware` d'Uvicorn](https://github.com/encode/uvicorn/blob/master/uvicorn/middleware/proxy_headers.py)
-- [MessagePack](https://github.com/florimondmanca/msgpack-asgi)
+* [Le `ProxyHeadersMiddleware` d'Uvicorn](https://github.com/Kludex/uvicorn/blob/main/uvicorn/middleware/proxy_headers.py)
+* [MessagePack](https://github.com/florimondmanca/msgpack-asgi)
-Pour voir d'autres middlewares disponibles, consultez la [documentation des middlewares de Starlette](https://www.starlette.dev/middleware/) et la [liste ASGI Awesome](https://github.com/florimondmanca/awesome-asgi).
+Pour voir d'autres middlewares disponibles, consultez la [documentation des middlewares de Starlette](https://starlette.dev/middleware/) et la [liste ASGI Awesome](https://github.com/florimondmanca/awesome-asgi).
diff --git a/docs/fr/docs/advanced/openapi-callbacks.md b/docs/fr/docs/advanced/openapi-callbacks.md
index 54f8e3ff7..d2748aefa 100644
--- a/docs/fr/docs/advanced/openapi-callbacks.md
+++ b/docs/fr/docs/advanced/openapi-callbacks.md
@@ -35,7 +35,7 @@ Cette partie est assez normale, la plupart du code vous est probablement déjà
/// tip | Astuce
-Le paramètre de requête `callback_url` utilise un type Pydantic [Url](https://docs.pydantic.dev/latest/api/networks/).
+Le paramètre de requête `callback_url` utilise un type Pydantic [Url](https://pydantic.dev/docs/validation/latest/api/pydantic/networks/).
///
@@ -106,11 +106,11 @@ Il devrait ressembler exactement à un *chemin d'accès* FastAPI normal :
Il y a 2 principales différences par rapport à un *chemin d'accès* normal :
* Il n’a pas besoin d’avoir de code réel, car votre application n’appellera jamais ce code. Il sert uniquement à documenter l’*API externe*. La fonction peut donc simplement contenir `pass`.
-* Le *chemin* peut contenir une [expression OpenAPI 3](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#key-expression) (voir plus bas) où il peut utiliser des variables avec des paramètres et des parties de la requête originale envoyée à *votre API*.
+* Le *chemin* peut contenir une [expression OpenAPI 3](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#key-expression) (voir plus bas) où il peut utiliser des variables avec des paramètres et des parties de la requête originale envoyée à *votre API*.
### L’expression du chemin de callback { #the-callback-path-expression }
-Le *chemin* du callback peut contenir une [expression OpenAPI 3](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md#key-expression) qui peut inclure des parties de la requête originale envoyée à *votre API*.
+Le *chemin* du callback peut contenir une [expression OpenAPI 3](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#key-expression) qui peut inclure des parties de la requête originale envoyée à *votre API*.
Dans ce cas, c’est la `str` :
@@ -177,10 +177,10 @@ Remarquez que vous ne passez pas le routeur lui-même (`invoices_callback_router
///
-### Vérifier la documentation { #check-the-docs }
+### Vérifier les documents { #check-the-docs }
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 votre documentation incluant une section « Callbacks » pour votre *chemin d'accès* qui montre à quoi l’*API externe* devrait ressembler :
+Vous verrez vos documents incluant une section « Callbacks » pour votre *chemin d'accès* qui montre à quoi l’*API externe* devrait ressembler :
diff --git a/docs/fr/docs/advanced/response-cookies.md b/docs/fr/docs/advanced/response-cookies.md
index 9efa045b1..cdead4924 100644
--- a/docs/fr/docs/advanced/response-cookies.md
+++ b/docs/fr/docs/advanced/response-cookies.md
@@ -1,6 +1,5 @@
# Cookies de réponse { #response-cookies }
-
## Utiliser un paramètre `Response` { #use-a-response-parameter }
Vous pouvez déclarer un paramètre de type `Response` dans votre *fonction de chemin d'accès*.
@@ -49,4 +48,4 @@ Et comme `Response` peut être utilisé fréquemment pour définir des en-têtes
///
-Pour voir tous les paramètres et options disponibles, consultez la [documentation de Starlette](https://www.starlette.dev/responses/#set-cookie).
+Pour voir tous les paramètres et options disponibles, consultez la [documentation de Starlette](https://starlette.dev/responses/#set-cookie).
diff --git a/docs/fr/docs/advanced/response-headers.md b/docs/fr/docs/advanced/response-headers.md
index e319ffefb..332bca963 100644
--- a/docs/fr/docs/advanced/response-headers.md
+++ b/docs/fr/docs/advanced/response-headers.md
@@ -38,4 +38,4 @@ Et comme `Response` peut être utilisée fréquemment pour définir des en-tête
Gardez à l'esprit que des en-têtes propriétaires personnalisés peuvent être ajoutés [en utilisant le préfixe `X-`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers).
-Mais si vous avez des en-têtes personnalisés que vous voulez qu'un client dans un navigateur puisse voir, vous devez les ajouter à vos configurations CORS (en savoir plus dans [CORS (Cross-Origin Resource Sharing)](../tutorial/cors.md)), en utilisant le paramètre `expose_headers` documenté dans [la documentation CORS de Starlette](https://www.starlette.dev/middleware/#corsmiddleware).
+Mais si vous avez des en-têtes personnalisés que vous voulez qu'un client dans un navigateur puisse voir, vous devez les ajouter à vos configurations CORS (en savoir plus dans [CORS (Cross-Origin Resource Sharing)](../tutorial/cors.md)), en utilisant le paramètre `expose_headers` documenté dans [la documentation CORS de Starlette](https://starlette.dev/middleware/#corsmiddleware).
diff --git a/docs/fr/docs/advanced/settings.md b/docs/fr/docs/advanced/settings.md
index 722274d57..621907bf7 100644
--- a/docs/fr/docs/advanced/settings.md
+++ b/docs/fr/docs/advanced/settings.md
@@ -6,41 +6,45 @@ La plupart de ces paramètres sont variables (peuvent changer), comme les URL de
C'est pourquoi il est courant de les fournir via des variables d'environnement lues par l'application.
+Une **variable d'environnement** (aussi appelée **env var**) est une valeur qui vit en dehors du code Python, dans le système d'exploitation, et qui peut être lue par votre application et d'autres programmes.
+
+Vous pouvez créer une variable d'environnement pour une commande lorsque vous l'exécutez. Vous verrez les commandes spécifiques à chaque plateforme ci-dessous.
+
/// tip | Astuce
-Pour comprendre les variables d'environnement, vous pouvez lire [Variables d'environnement](../environment-variables.md).
+Lisez le [guide des variables d'environnement](https://tiangolo.com/guides/environment-variables/) pour une explication détaillée du fonctionnement des variables d'environnement.
///
## Types et validation { #types-and-validation }
-Ces variables d'environnement ne gèrent que des chaînes de texte, car elles sont externes à Python et doivent être compatibles avec d'autres programmes et le reste du système (et même avec différents systèmes d'exploitation, comme Linux, Windows, macOS).
+Ces variables d'environnement ne gèrent que des chaînes de texte, car elles sont externes à Python et doivent être compatibles avec d'autres programmes et le reste du système (et même avec différents systèmes d'exploitation, comme Linux, Windows et macOS).
Cela signifie que toute valeur lue en Python depuis une variable d'environnement sera une `str`, et toute conversion vers un autre type ou toute validation doit être effectuée dans le code.
## Pydantic `Settings` { #pydantic-settings }
-Heureusement, Pydantic fournit un excellent utilitaire pour gérer ces paramètres provenant des variables d'environnement avec [Pydantic : gestion des paramètres](https://docs.pydantic.dev/latest/concepts/pydantic_settings/).
+Heureusement, Pydantic fournit un excellent utilitaire pour gérer ces paramètres provenant des variables d'environnement avec [Pydantic : gestion des paramètres](https://pydantic.dev/docs/validation/latest/concepts/pydantic_settings/).
### Installer `pydantic-settings` { #install-pydantic-settings }
-D'abord, vous devez créer votre [environnement virtuel](../virtual-environments.md), l'activer, puis installer le paquet `pydantic-settings` :
+Ajoutez le paquet `pydantic-settings` à votre projet :
« Nous avons adopté la bibliothèque FastAPI pour lancer un serveur REST qui peut être interrogé pour obtenir des prédictions. » [pour Ludwig]-
« Netflix est heureux d’annoncer la publication en open source de notre framework d’orchestration de gestion de crise : Dispatch ! » [construit avec FastAPI]@@ -133,7 +133,7 @@ Les principales fonctionnalités sont : « _Nous avons adopté la bibliothèque **FastAPI** pour lancer un serveur **REST** qui peut être interrogé pour obtenir des **prédictions**. [pour Ludwig]_ » -
-
## Mini documentaire FastAPI { #fastapi-mini-documentary }
Un [mini documentaire FastAPI](https://www.youtube.com/watch?v=mpR8ngthqiE) est sorti fin 2025, vous pouvez le regarder en ligne :
@@ -175,17 +169,17 @@ Si vous construisez une application
```console
-$ pip install "fastapi[standard]"
+$ uv add "fastapi[standard]"
---> 100%
```
@@ -194,6 +188,8 @@ $ pip install "fastapi[standard]"
**Remarque** : Vous devez vous assurer de mettre `"fastapi[standard]"` entre guillemets pour garantir que cela fonctionne dans tous les terminaux.
+Si vous préférez utiliser `pip`, installez `fastapi[standard]` dans un environnement virtuel. Consultez le [guide d'installation](tutorial/#install-fastapi) pour les étapes alternatives.
+
## Exemple { #example }
### Créer { #create-it }
@@ -250,7 +246,7 @@ Lancez le serveur avec :
fastapi dev...
@@ -68,7 +68,7 @@ Et votre *chemin d'accès* a un petit cadenas dans le coin supérieur droit sur
///
-Et si vous cliquez dessus, vous obtenez un petit formulaire d'autorisation pour saisir un `username` et un `password` (et d'autres champs optionnels) :
+Et si vous cliquez dessus, vous obtenez un petit formulaire d'autorisation pour saisir un `username` et un `password` (et d'autres champs optionnels) :
@@ -96,7 +96,7 @@ OAuth2 a été conçu pour que le backend ou l'API puisse être indépendant du
Mais dans ce cas, la même application **FastAPI** gérera l'API et l'authentification.
-Voyons cela selon ce point de vue simplifié :
+Voyons cela selon ce point de vue simplifié :
* L'utilisateur saisit le `username` et le `password` dans le frontend, puis appuie sur Entrée.
* Le frontend (exécuté dans le navigateur de l'utilisateur) envoie ce `username` et ce `password` vers une URL spécifique de notre API (déclarée avec `tokenUrl="token"`).
@@ -110,7 +110,7 @@ Voyons cela selon ce point de vue simplifié :
* Le frontend doit récupérer d'autres données depuis l'API.
* Mais cela nécessite une authentification pour cet endpoint spécifique.
* Donc, pour s'authentifier auprès de notre API, il envoie un en-tête `Authorization` avec une valeur `Bearer ` suivie du token.
- * Si le token contient `foobar`, le contenu de l'en-tête `Authorization` serait : `Bearer foobar`.
+ * Si le token contient `foobar`, le contenu de l'en-tête `Authorization` serait : `Bearer foobar`.
## Le `OAuth2PasswordBearer` de **FastAPI** { #fastapis-oauth2passwordbearer }
@@ -158,7 +158,7 @@ C'est parce qu'il utilise le même nom que dans la spécification OpenAPI. Ainsi
La variable `oauth2_scheme` est une instance de `OAuth2PasswordBearer`, mais c'est aussi un « callable ».
-Elle pourrait être appelée ainsi :
+Elle pourrait être appelée ainsi :
```Python
oauth2_scheme(some, parameters)
@@ -192,7 +192,7 @@ S'il ne voit pas d'en-tête `Authorization`, ou si la valeur n'a pas de token `B
Vous n'avez même pas à vérifier si le token existe pour renvoyer une erreur. Vous pouvez être sûr que si votre fonction est exécutée, elle aura une `str` dans ce token.
-Vous pouvez déjà l'essayer dans les documents interactifs :
+Vous pouvez déjà l'essayer dans les documents interactifs :
diff --git a/docs/fr/docs/tutorial/security/oauth2-jwt.md b/docs/fr/docs/tutorial/security/oauth2-jwt.md
index f92fd75a6..87f8b2cfb 100644
--- a/docs/fr/docs/tutorial/security/oauth2-jwt.md
+++ b/docs/fr/docs/tutorial/security/oauth2-jwt.md
@@ -30,12 +30,12 @@ Si vous voulez expérimenter avec des jetons JWT et voir comment ils fonctionnen
Nous devons installer `PyJWT` pour générer et vérifier les jetons JWT en Python.
-Assurez-vous de créer un [environnement virtuel](../../virtual-environments.md), de l'activer, puis d'installer `pyjwt` :
+Ajoutez `pyjwt` à votre projet :