@@ -123,4 +123,4 @@ Et comme vous utilisez `StaticFiles`, ce fichier CSS est servi automatiquement p
## En savoir plus { #more-details }
-Pour plus de détails, y compris sur la façon de tester des templates, consultez
.
+Pour plus de détails, y compris sur la façon de tester des templates, consultez [la documentation de Starlette sur les templates](https://www.starlette.dev/templates/).
diff --git a/docs/fr/docs/advanced/testing-websockets.md b/docs/fr/docs/advanced/testing-websockets.md
index e9f97ab5f..3f35e13cc 100644
--- a/docs/fr/docs/advanced/testing-websockets.md
+++ b/docs/fr/docs/advanced/testing-websockets.md
@@ -8,6 +8,6 @@ Pour cela, vous utilisez `TestClient` dans une instruction `with`, en vous conne
/// note | Remarque
-Pour plus de détails, consultez la documentation de Starlette sur le
.
+Pour plus de détails, consultez la documentation de Starlette sur le [test des WebSockets](https://www.starlette.dev/testclient/#testing-websocket-sessions).
///
diff --git a/docs/fr/docs/advanced/using-request-directly.md b/docs/fr/docs/advanced/using-request-directly.md
index 4df3f90e8..f7779f1a0 100644
--- a/docs/fr/docs/advanced/using-request-directly.md
+++ b/docs/fr/docs/advanced/using-request-directly.md
@@ -15,7 +15,7 @@ Mais il existe des situations où vous pouvez avoir besoin d'accéder directemen
## Détails sur l'objet `Request` { #details-about-the-request-object }
-Comme **FastAPI** est en fait **Starlette** en dessous, avec une couche de plusieurs outils au-dessus, vous pouvez utiliser directement l'objet
de Starlette lorsque vous en avez besoin.
+Comme **FastAPI** est en fait **Starlette** en dessous, avec une couche de plusieurs outils au-dessus, vous pouvez utiliser directement l'objet [`Request`](https://www.starlette.dev/requests/) de Starlette lorsque vous en avez besoin.
Cela signifie aussi que si vous récupérez des données directement à partir de l'objet `Request` (par exemple, lire le corps), elles ne seront pas validées, converties ni documentées (avec OpenAPI, pour l'interface utilisateur automatique de l'API) par FastAPI.
@@ -45,7 +45,7 @@ De la même façon, vous pouvez déclarer tout autre paramètre normalement, et
## Documentation de `Request` { #request-documentation }
-Vous pouvez lire plus de détails sur
.
+Vous pouvez lire plus de détails sur [l'objet `Request` sur le site de documentation officiel de Starlette](https://www.starlette.dev/requests/).
/// note | Détails techniques
diff --git a/docs/fr/docs/advanced/websockets.md b/docs/fr/docs/advanced/websockets.md
index d78f89c37..737bbc72e 100644
--- a/docs/fr/docs/advanced/websockets.md
+++ b/docs/fr/docs/advanced/websockets.md
@@ -1,10 +1,10 @@
# WebSockets { #websockets }
-Vous pouvez utiliser
avec **FastAPI**.
+Vous pouvez utiliser [WebSockets](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API) avec **FastAPI**.
## Installer `websockets` { #install-websockets }
-Vous devez créer un [environnement virtuel](../virtual-environments.md){.internal-link target=_blank}, l'activer, et installer `websockets` (une bibliothèque Python qui facilite l'utilisation du protocole « WebSocket ») :
+Vous devez créer un [environnement virtuel](../virtual-environments.md), l'activer, et installer `websockets` (une bibliothèque Python qui facilite l'utilisation du protocole « WebSocket ») :
@@ -64,19 +64,19 @@ Vous pouvez recevoir et envoyer des données binaires, texte et JSON.
## Essayer { #try-it }
-Si votre fichier s'appelle `main.py`, exécutez votre application avec :
+Mettez votre code dans un fichier `main.py` puis exécutez votre application :
```console
-$ fastapi dev main.py
+$ fastapi dev
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
```
-Ouvrez votre navigateur à l'adresse
http://127.0.0.1:8000.
+Ouvrez votre navigateur à l'adresse [http://127.0.0.1:8000](http://127.0.0.1:8000).
Vous verrez une page simple comme :
@@ -115,25 +115,25 @@ Ils fonctionnent de la même manière que pour les autres endpoints/*chemins d'a
Comme il s'agit d'un WebSocket, il n'est pas vraiment logique de lever une `HTTPException`, nous levons plutôt une `WebSocketException`.
-Vous pouvez utiliser un code de fermeture parmi les
codes valides définis dans la spécification.
+Vous pouvez utiliser un code de fermeture parmi les [codes valides définis dans la spécification](https://tools.ietf.org/html/rfc6455#section-7.4.1).
///
### Essayez les WebSockets avec des dépendances { #try-the-websockets-with-dependencies }
-Si votre fichier s'appelle `main.py`, exécutez votre application avec :
+Exécutez votre application :
```console
-$ fastapi dev main.py
+$ fastapi dev
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
```
-Ouvrez votre navigateur à l'adresse
http://127.0.0.1:8000.
+Ouvrez votre navigateur à l'adresse [http://127.0.0.1:8000](http://127.0.0.1:8000).
Là, vous pouvez définir :
@@ -174,7 +174,7 @@ L'application ci-dessus est un exemple minimal et simple pour montrer comment g
Mais gardez à l'esprit que, comme tout est géré en mémoire, dans une seule liste, cela ne fonctionnera que tant que le processus s'exécute et uniquement avec un seul processus.
-Si vous avez besoin de quelque chose de facile à intégrer avec FastAPI mais plus robuste, pris en charge par Redis, PostgreSQL ou autres, consultez
encode/broadcaster.
+Si vous avez besoin de quelque chose de facile à intégrer avec FastAPI mais plus robuste, pris en charge par Redis, PostgreSQL ou autres, consultez [encode/broadcaster](https://github.com/encode/broadcaster).
///
@@ -182,5 +182,5 @@ Si vous avez besoin de quelque chose de facile à intégrer avec FastAPI mais pl
Pour en savoir plus sur les options, consultez la documentation de Starlette concernant :
-*
La classe `WebSocket`.
-*
Gestion des WebSocket basée sur des classes.
+* [La classe `WebSocket`](https://www.starlette.dev/websockets/).
+* [Gestion des WebSocket basée sur des classes](https://www.starlette.dev/endpoints/#websocketendpoint).
diff --git a/docs/fr/docs/advanced/wsgi.md b/docs/fr/docs/advanced/wsgi.md
index fc89819d2..fe39729f7 100644
--- a/docs/fr/docs/advanced/wsgi.md
+++ b/docs/fr/docs/advanced/wsgi.md
@@ -1,6 +1,6 @@
# Inclure WSGI - Flask, Django, autres { #including-wsgi-flask-django-others }
-Vous pouvez monter des applications WSGI comme vous l'avez vu avec [Sous-applications - Montages](sub-applications.md){.internal-link target=_blank}, [Derrière un proxy](behind-a-proxy.md){.internal-link target=_blank}.
+Vous pouvez monter des applications WSGI comme vous l'avez vu avec [Sous-applications - Montages](sub-applications.md), [Derrière un proxy](behind-a-proxy.md).
Pour cela, vous pouvez utiliser `WSGIMiddleware` et l'utiliser pour envelopper votre application WSGI, par exemple Flask, Django, etc.
@@ -36,13 +36,13 @@ Désormais, chaque requête sous le chemin `/v1/` sera gérée par l'application
Et le reste sera géré par **FastAPI**.
-Si vous l'exécutez et allez à
http://localhost:8000/v1/, vous verrez la réponse de Flask :
+Si vous l'exécutez et allez à [http://localhost:8000/v1/](http://localhost:8000/v1/) vous verrez la réponse de Flask :
```txt
Hello, World from Flask!
```
-Et si vous allez à
http://localhost:8000/v2, vous verrez la réponse de FastAPI :
+Et si vous allez à [http://localhost:8000/v2](http://localhost:8000/v2) vous verrez la réponse de FastAPI :
```JSON
{
diff --git a/docs/fr/docs/alternatives.md b/docs/fr/docs/alternatives.md
index c344bd1f8..54ad83ae8 100644
--- a/docs/fr/docs/alternatives.md
+++ b/docs/fr/docs/alternatives.md
@@ -17,7 +17,7 @@ précédents, en utilisant des fonctionnalités du langage qui n'étaient même
## Outils précédents { #previous-tools }
-###
Django { #django }
+### [Django](https://www.djangoproject.com/) { #django }
C'est le framework Python le plus populaire et il bénéficie d'une grande confiance. Il est utilisé pour construire
des systèmes tel qu'Instagram.
@@ -28,9 +28,9 @@ stockage.
Il a été créé pour générer le HTML en backend, pas pour créer des API consommées par un frontend moderne (comme React, Vue.js et Angular) ou par d'autres systèmes (comme les appareils
IoT) communiquant avec lui.
-###
Django REST Framework { #django-rest-framework }
+### [Django REST Framework](https://www.django-rest-framework.org/) { #django-rest-framework }
-Django REST framework a été conçu comme une boîte à outils flexible permettant de construire des API Web à partir de Django, afin d'améliorer ses capacités en matière d'API.
+Django REST Framework a été conçu comme une boîte à outils flexible permettant de construire des API Web à partir de Django, afin d'améliorer ses capacités en matière d'API.
Il est utilisé par de nombreuses entreprises, dont Mozilla, Red Hat et Eventbrite.
@@ -39,7 +39,7 @@ premières idées qui a inspiré « la recherche de » **FastAPI**.
/// note | Remarque
-Django REST framework a été créé par Tom Christie. Le créateur de Starlette et Uvicorn, sur lesquels **FastAPI** est basé.
+Django REST Framework a été créé par Tom Christie. Le créateur de Starlette et Uvicorn, sur lesquels **FastAPI** est basé.
///
@@ -49,7 +49,7 @@ Avoir une interface de documentation automatique de l'API.
///
-###
Flask { #flask }
+### [Flask](https://flask.palletsprojects.com) { #flask }
Flask est un « micro‑framework », il ne comprend pas d'intégrations de bases de données ni beaucoup de choses qui sont fournies par défaut dans Django.
@@ -73,7 +73,7 @@ Proposer un système de routage simple et facile à utiliser.
///
-###
Requests { #requests }
+### [Requests](https://requests.readthedocs.io) { #requests }
**FastAPI** n'est pas réellement une alternative à **Requests**. Leur cadre est très différent.
@@ -115,7 +115,7 @@ Notez les similitudes entre `requests.get(...)` et `@app.get(...)`.
///
-###
Swagger /
OpenAPI { #swagger-openapi }
+### [Swagger](https://swagger.io/) / [OpenAPI](https://github.com/OAI/OpenAPI-Specification/) { #swagger-openapi }
La principale fonctionnalité que j'ai emprunté à Django REST Framework était la documentation automatique des API.
@@ -134,8 +134,8 @@ Adopter et utiliser une norme ouverte pour les spécifications des API, au lieu
Intégrer des outils d'interface utilisateur basés sur des normes :
-*
Swagger UI
-*
ReDoc
+* [Swagger UI](https://github.com/swagger-api/swagger-ui)
+* [ReDoc](https://github.com/Rebilly/ReDoc)
Ces deux-là ont été choisis parce qu'ils sont populaires et stables, mais en faisant une recherche rapide, vous pourriez trouver des dizaines d'alternatives supplémentaires pour OpenAPI (que vous pouvez utiliser avec **FastAPI**).
@@ -147,7 +147,7 @@ Il y a plusieurs frameworks REST pour Flask, mais après avoir investi du temps
découvert que le développement de beaucoup d'entre eux sont suspendus ou abandonnés, avec plusieurs problèmes
permanents qui les rendent inadaptés.
-###
Marshmallow { #marshmallow }
+### [Marshmallow](https://marshmallow.readthedocs.io/en/stable/) { #marshmallow }
L'une des principales fonctionnalités nécessaires aux systèmes API est la «
sérialisation » des données, qui consiste à prendre les données du code (Python) et à
les convertir en quelque chose qui peut être envoyé sur le réseau. Par exemple, convertir un objet contenant des
@@ -166,11 +166,11 @@ Mais elle a été créée avant que les annotations de type n'existent en Python
/// check | A inspiré **FastAPI** à
-Utilisez du code pour définir des « schémas » qui fournissent automatiquement les types de données et la validation.
+Utiliser du code pour définir des « schémas » qui fournissent automatiquement les types de données et la validation.
///
-###
Webargs { #webargs }
+### [Webargs](https://webargs.readthedocs.io/en/latest/) { #webargs }
Une autre grande fonctionnalité requise par les API est l’
analyse des données provenant des requêtes entrantes.
@@ -192,7 +192,7 @@ Disposer d'une validation automatique des données des requêtes entrantes.
///
-###
APISpec { #apispec }
+### [APISpec](https://apispec.readthedocs.io/en/stable/) { #apispec }
Marshmallow et Webargs fournissent la validation, l'analyse et la sérialisation en tant que plug-ins.
@@ -222,7 +222,7 @@ Supporter la norme ouverte pour les API, OpenAPI.
///
-###
Flask-apispec { #flask-apispec }
+### [Flask-apispec](https://flask-apispec.readthedocs.io/en/latest/) { #flask-apispec }
C'est un plug-in pour Flask, qui relie Webargs, Marshmallow et APISpec.
@@ -237,11 +237,11 @@ Cette combinaison de Flask, Flask-apispec avec Marshmallow et Webargs était ma
Son utilisation a conduit à la création de plusieurs générateurs Flask full-stack. Ce sont les principales stacks que
j'ai (ainsi que plusieurs équipes externes) utilisées jusqu'à présent :
-*
https://github.com/tiangolo/full-stack
-*
https://github.com/tiangolo/full-stack-flask-couchbase
-*
https://github.com/tiangolo/full-stack-flask-couchdb
+* [https://github.com/tiangolo/full-stack](https://github.com/tiangolo/full-stack)
+* [https://github.com/tiangolo/full-stack-flask-couchbase](https://github.com/tiangolo/full-stack-flask-couchbase)
+* [https://github.com/tiangolo/full-stack-flask-couchdb](https://github.com/tiangolo/full-stack-flask-couchdb)
-Ces mêmes générateurs full-stack ont servi de base aux [Générateurs de projets pour **FastAPI**](project-generation.md){.internal-link target=_blank}.
+Ces mêmes générateurs full-stack ont servi de base aux [Générateurs de projets pour **FastAPI**](project-generation.md).
/// info
@@ -255,7 +255,7 @@ Générer le schéma OpenAPI automatiquement, à partir du même code qui défin
///
-###
NestJS (et
Angular) { #nestjs-and-angular }
+### [NestJS](https://nestjs.com/) (et [Angular](https://angular.io/)) { #nestjs-and-angular }
Ce n'est même pas du Python, NestJS est un framework JavaScript (TypeScript) NodeJS inspiré d'Angular.
@@ -278,13 +278,13 @@ Disposer d'un puissant système d'injection de dépendances. Trouver un moyen de
///
-###
Sanic { #sanic }
+### [Sanic](https://sanic.readthedocs.io/en/latest/) { #sanic }
C'était l'un des premiers frameworks Python extrêmement rapides basés sur `asyncio`. Il a été conçu pour être très similaire à Flask.
/// note | Détails techniques
-Il utilisait
`uvloop` au lieu du système par défaut de Python `asyncio`. C'est ce qui l'a rendu si rapide.
+Il utilisait [`uvloop`](https://github.com/MagicStack/uvloop) au lieu du système par défaut de Python `asyncio`. C'est ce qui l'a rendu si rapide.
Il a clairement inspiré Uvicorn et Starlette, qui sont actuellement plus rapides que Sanic dans les benchmarks.
@@ -292,13 +292,13 @@ Il a clairement inspiré Uvicorn et Starlette, qui sont actuellement plus rapide
/// check | A inspiré **FastAPI** à
-Trouvez un moyen d'avoir une performance folle.
+Trouver un moyen d'avoir une performance folle.
C'est pourquoi **FastAPI** est basé sur Starlette, car il s'agit du framework le plus rapide disponible (testé par des benchmarks tiers).
///
-###
Falcon { #falcon }
+### [Falcon](https://falconframework.org/) { #falcon }
Falcon est un autre framework Python haute performance, il est conçu pour être minimal, et est utilisé comme fondation pour d'autres frameworks comme Hug.
@@ -312,13 +312,13 @@ Ainsi, la validation, la sérialisation et la documentation des données doivent
Trouver des moyens d'obtenir de bonnes performances.
-Avec Hug (puisque Hug est basé sur Falcon), **FastAPI** a inspiré la déclaration d'un paramètre `response` dans les fonctions.
+Avec Hug (puisque Hug est basé sur Falcon), cela a inspiré **FastAPI** à déclarer un paramètre `response` dans les fonctions.
Bien que dans FastAPI, il est facultatif, et est utilisé principalement pour définir les en-têtes, les cookies, et les codes de statut alternatifs.
///
-###
Molten { #molten }
+### [Molten](https://moltenframework.com/) { #molten }
J'ai découvert Molten lors des premières étapes de développement de **FastAPI**. Et il a des idées assez similaires :
@@ -346,7 +346,7 @@ Cela a en fait inspiré la mise à jour de certaines parties de Pydantic, afin d
///
-###
Hug { #hug }
+### [Hug](https://github.com/hugapi/hug) { #hug }
Hug a été l'un des premiers frameworks à implémenter la déclaration des types de paramètres d'API en utilisant les annotations de type Python. C'était une excellente idée qui a inspiré d'autres outils à faire de même.
@@ -363,7 +363,7 @@ Comme il est basé sur l'ancienne norme pour les frameworks web Python synchrone
/// info
-Hug a été créé par Timothy Crosley, le créateur de
`isort`, un excellent outil pour trier automatiquement les imports dans les fichiers Python.
+Hug a été créé par Timothy Crosley, le créateur de [`isort`](https://github.com/timothycrosley/isort), un excellent outil pour trier automatiquement les imports dans les fichiers Python.
///
@@ -378,7 +378,7 @@ Hug a inspiré **FastAPI** pour déclarer un paramètre `response` dans les fonc
///
-###
APIStar (<= 0.5) { #apistar-0-5 }
+### [APIStar](https://github.com/encode/apistar) (<= 0.5) { #apistar-0-5 }
Juste avant de décider de développer **FastAPI**, j'ai trouvé le serveur **APIStar**. Il contenait presque tout ce
que je recherchais et avait un beau design.
@@ -430,7 +430,7 @@ Je considère **FastAPI** comme un « successeur spirituel » d'APIStar, tout en
## Utilisés par **FastAPI** { #used-by-fastapi }
-###
Pydantic { #pydantic }
+### [Pydantic](https://docs.pydantic.dev/) { #pydantic }
Pydantic est une bibliothèque permettant de définir la validation, la sérialisation et la documentation des données (à l'aide de JSON Schema) en se basant sur les annotations de type Python.
@@ -447,7 +447,7 @@ Gérer toute la validation des données, leur sérialisation et la documentation
///
-###
Starlette { #starlette }
+### [Starlette](https://www.starlette.dev/) { #starlette }
Starlette est un framework/toolkit léger
ASGI, qui est idéal pour construire des services asyncio performants.
@@ -492,7 +492,7 @@ Ainsi, tout ce que vous pouvez faire avec Starlette, vous pouvez le faire direct
///
-###
Uvicorn { #uvicorn }
+### [Uvicorn](https://www.uvicorn.dev/) { #uvicorn }
Uvicorn est un serveur ASGI rapide comme l'éclair, basé sur uvloop et httptools.
@@ -507,10 +507,10 @@ Le serveur web principal pour exécuter les applications **FastAPI**.
Vous pouvez également utiliser l'option de ligne de commande `--workers` pour avoir un serveur multi‑processus asynchrone.
-Pour plus de détails, consultez la section [Déploiement](deployment/index.md){.internal-link target=_blank}.
+Pour plus de détails, consultez la section [Déploiement](deployment/index.md).
///
## Benchmarks et vitesse { #benchmarks-and-speed }
-Pour comprendre, comparer et voir la différence entre Uvicorn, Starlette et FastAPI, consultez la section sur les [Benchmarks](benchmarks.md){.internal-link target=_blank}.
+Pour comprendre, comparer et voir la différence entre Uvicorn, Starlette et FastAPI, consultez la section sur les [Benchmarks](benchmarks.md).
diff --git a/docs/fr/docs/async.md b/docs/fr/docs/async.md
index 72923e03b..f2afba9c6 100644
--- a/docs/fr/docs/async.md
+++ b/docs/fr/docs/async.md
@@ -40,11 +40,11 @@ def results():
---
-Si votre application n'a pas à communiquer avec une autre chose et à attendre sa réponse, utilisez `async def`, même si vous n'avez pas besoin d'utiliser `await` à l'intérieur.
+Si votre application (d'une certaine manière) n'a pas à communiquer avec une autre chose et à attendre sa réponse, utilisez `async def`, même si vous n'avez pas besoin d'utiliser `await` à l'intérieur.
---
-Si vous ne savez pas, utilisez seulement `def` comme vous le feriez habituellement.
+Si vous ne savez pas, utilisez seulement `def`.
---
@@ -141,7 +141,7 @@ Vous et votre crush 😍 mangez les burgers 🍔 et passez un bon moment ✨.
/// info
-Illustrations proposées par
Ketrina Thompson. 🎨
+Illustrations proposées par [Ketrina Thompson](https://www.instagram.com/ketrinadrawsalot). 🎨
///
@@ -207,7 +207,7 @@ Durant tout ce processus, il n'y a presque pas eu de discussions ou de flirts ca
/// info
-Illustrations proposées par
Ketrina Thompson. 🎨
+Illustrations proposées par [Ketrina Thompson](https://www.instagram.com/ketrinadrawsalot). 🎨
///
@@ -251,7 +251,7 @@ Ce type d'asynchronicité est ce qui a rendu NodeJS populaire (bien que NodeJS n
Et c'est le même niveau de performance que celui obtenu avec **FastAPI**.
-Et comme on peut avoir du parallélisme et de l'asynchronicité en même temps, on obtient des performances plus hautes que la plupart des frameworks NodeJS testés et égales à celles du Go, qui est un langage compilé plus proche du C
(tout ça grâce à Starlette).
+Et comme on peut avoir du parallélisme et de l'asynchronicité en même temps, on obtient des performances plus hautes que la plupart des frameworks NodeJS testés et égales à celles du Go, qui est un langage compilé plus proche du C [(tout ça grâce à Starlette)](https://www.techempower.com/benchmarks/#section=data-r17&hw=ph&test=query&l=zijmkf-1).
### Est-ce que la concurrence est mieux que le parallélisme ? { #is-concurrency-better-than-parallelism }
@@ -298,7 +298,7 @@ Mais vous pouvez aussi profiter du parallélisme et du multiprocessing (plusieur
Ça, ajouté au fait que Python soit le langage le plus populaire pour la **Data Science**, le **Machine Learning** et surtout le **Deep Learning**, font de **FastAPI** un très bon choix pour les APIs et applications de **Data Science** / **Machine Learning**.
-Pour comprendre comment mettre en place ce parallélisme en production, allez lire la section [Déploiement](deployment/index.md){.internal-link target=_blank}.
+Pour comprendre comment mettre en place ce parallélisme en production, allez lire la section [Déploiement](deployment/index.md).
## `async` et `await` { #async-and-await }
@@ -363,13 +363,13 @@ Mais si vous souhaitez utiliser `async` / `await` sans FastAPI, vous pouvez éga
### Écrire votre propre code async { #write-your-own-async-code }
-Starlette (et **FastAPI**) s’appuie sur
AnyIO, ce qui le rend compatible à la fois avec la bibliothèque standard
asyncio de Python et avec
Trio.
+Starlette (et **FastAPI**) s’appuie sur [AnyIO](https://anyio.readthedocs.io/en/stable/), ce qui le rend compatible à la fois avec la bibliothèque standard [asyncio](https://docs.python.org/3/library/asyncio-task.html) de Python et avec [Trio](https://trio.readthedocs.io/en/stable/).
-En particulier, vous pouvez utiliser directement
AnyIO pour vos cas d’usage de concurrence avancés qui nécessitent des schémas plus élaborés dans votre propre code.
+En particulier, vous pouvez utiliser directement [AnyIO](https://anyio.readthedocs.io/en/stable/) pour vos cas d’usage de concurrence avancés qui nécessitent des schémas plus élaborés dans votre propre code.
-Et même si vous n’utilisiez pas FastAPI, vous pourriez aussi écrire vos propres applications async avec
AnyIO pour une grande compatibilité et pour bénéficier de ses avantages (par ex. la « structured concurrency »).
+Et même si vous n’utilisiez pas FastAPI, vous pourriez aussi écrire vos propres applications async avec [AnyIO](https://anyio.readthedocs.io/en/stable/) pour une grande compatibilité et pour bénéficier de ses avantages (par ex. la « structured concurrency »).
-J’ai créé une autre bibliothèque au-dessus d’AnyIO, comme une fine surcouche, pour améliorer un peu les annotations de type et obtenir une meilleure **autocomplétion**, des **erreurs en ligne**, etc. Elle propose également une introduction et un tutoriel accessibles pour vous aider à **comprendre** et écrire **votre propre code async** :
Asyncer. Elle sera particulièrement utile si vous devez **combiner du code async avec du code classique** (bloquant/synchrone).
+J’ai créé une autre bibliothèque au-dessus d’AnyIO, comme une fine surcouche, pour améliorer un peu les annotations de type et obtenir une meilleure **autocomplétion**, des **erreurs en ligne**, etc. Elle propose également une introduction et un tutoriel accessibles pour vous aider à **comprendre** et écrire **votre propre code async** : [Asyncer](https://asyncer.tiangolo.com/). Elle sera particulièrement utile si vous devez **combiner du code async avec du code classique** (bloquant/synchrone).
### Autres formes de code asynchrone { #other-forms-of-asynchronous-code }
@@ -381,7 +381,7 @@ Cette même syntaxe (ou presque) a aussi été incluse récemment dans les versi
Mais avant ça, gérer du code asynchrone était bien plus complexe et difficile.
-Dans les versions précédentes de Python, vous auriez utilisé des threads ou
Gevent. Mais le code aurait été bien plus difficile à comprendre, débugger, et concevoir.
+Dans les versions précédentes de Python, vous auriez utilisé des threads ou [Gevent](https://www.gevent.org/). Mais le code aurait été bien plus difficile à comprendre, débugger, et concevoir.
Dans les versions précédentes de JavaScript côté navigateur / NodeJS, vous auriez utilisé des « callbacks ». Menant potentiellement à ce que l'on appelle le « callback hell ».
@@ -419,15 +419,15 @@ Quand vous déclarez une *fonction de chemin d'accès* avec un `def` normal et n
Si vous venez d'un autre framework asynchrone qui ne fonctionne pas comme de la façon décrite ci-dessus et que vous êtes habitué à définir des *fonctions de chemin d'accès* basiques et purement calculatoires avec un simple `def` pour un faible gain de performance (environ 100 nanosecondes), veuillez noter que dans **FastAPI**, l'effet serait plutôt contraire. Dans ces cas-là, il vaut mieux utiliser `async def` à moins que votre *fonction de chemin d'accès* utilise du code qui effectue des opérations
I/O bloquantes.
-Au final, dans les deux situations, il est fort probable que **FastAPI** soit tout de même [plus rapide](index.md#performance){.internal-link target=_blank} que (ou au moins de vitesse égale à) votre framework précédent.
+Au final, dans les deux situations, il est fort probable que **FastAPI** soit tout de même [plus rapide](index.md#performance) que (ou au moins de vitesse égale à) votre framework précédent.
### Dépendances { #dependencies }
-La même chose s'applique aux [dépendances](tutorial/dependencies/index.md){.internal-link target=_blank}. Si une dépendance est définie avec `def` plutôt que `async def`, elle est exécutée dans la threadpool externe.
+La même chose s'applique aux [dépendances](tutorial/dependencies/index.md). Si une dépendance est définie avec `def` plutôt que `async def`, elle est exécutée dans la threadpool externe.
### Sous-dépendances { #sub-dependencies }
-Vous pouvez avoir de multiples dépendances et [sous-dépendances](tutorial/dependencies/sub-dependencies.md){.internal-link target=_blank} dépendant les unes des autres (en tant que paramètres de la définition de la *fonction de chemin d'accès*), certaines créées avec `async def` et d'autres avec `def`. Cela fonctionnerait aussi, et celles définies avec un simple `def` seraient exécutées sur un thread externe (venant de la threadpool) plutôt que d'être « attendues ».
+Vous pouvez avoir de multiples dépendances et [sous-dépendances](tutorial/dependencies/sub-dependencies.md) dépendant les unes des autres (en tant que paramètres de la définition de la *fonction de chemin d'accès*), certaines créées avec `async def` et d'autres avec `def`. Cela fonctionnerait aussi, et celles définies avec un simple `def` seraient exécutées sur un thread externe (venant de la threadpool) plutôt que d'être « attendues ».
### Autres fonctions utilitaires { #other-utility-functions }
diff --git a/docs/fr/docs/benchmarks.md b/docs/fr/docs/benchmarks.md
index 4bb35dff7..b895118c8 100644
--- a/docs/fr/docs/benchmarks.md
+++ b/docs/fr/docs/benchmarks.md
@@ -1,6 +1,6 @@
# Tests de performance { #benchmarks }
-Les benchmarks indépendants de TechEmpower montrent que les applications **FastAPI** s’exécutant avec Uvicorn sont
parmi les frameworks Python les plus rapides disponibles, seulement en dessous de Starlette et Uvicorn eux‑mêmes (tous deux utilisés en interne par FastAPI).
+Les benchmarks indépendants de TechEmpower montrent que les applications **FastAPI** s’exécutant avec Uvicorn sont [parmi les frameworks Python les plus rapides disponibles](https://www.techempower.com/benchmarks/#section=test&runid=7464e520-0dc2-473d-bd34-dbdfd7e85911&hw=ph&test=query&l=zijzen-7), seulement en dessous de Starlette et Uvicorn eux‑mêmes (tous deux utilisés en interne par FastAPI).
Mais en prêtant attention aux tests de performance et aux comparaisons, vous devez tenir compte de ce qui suit.
diff --git a/docs/fr/docs/deployment/cloud.md b/docs/fr/docs/deployment/cloud.md
index 798a72a74..1ed030f0a 100644
--- a/docs/fr/docs/deployment/cloud.md
+++ b/docs/fr/docs/deployment/cloud.md
@@ -6,7 +6,7 @@ Dans la plupart des cas, les principaux fournisseurs cloud proposent des guides
## FastAPI Cloud { #fastapi-cloud }
-**
FastAPI Cloud** est créée par le même auteur et l'équipe à l'origine de **FastAPI**.
+**[FastAPI Cloud](https://fastapicloud.com)** est créée par le même auteur et l'équipe à l'origine de **FastAPI**.
Elle simplifie le processus de **création**, de **déploiement** et **d'accès** à une API avec un effort minimal.
@@ -16,9 +16,9 @@ FastAPI Cloud est le sponsor principal et le financeur des projets open source *
## Fournisseurs cloud - Sponsors { #cloud-providers-sponsors }
-D'autres fournisseurs cloud ✨ [**parrainent FastAPI**](../help-fastapi.md#sponsor-the-author){.internal-link target=_blank} ✨ également. 🙇
+D'autres fournisseurs cloud ✨ [**parrainent FastAPI**](../help-fastapi.md#sponsor-the-author) ✨ également. 🙇
Vous pouvez également envisager ces fournisseurs pour suivre leurs guides et essayer leurs services :
-*
Render
-*
Railway
+* [Render](https://docs.render.com/deploy-fastapi?utm_source=deploydoc&utm_medium=referral&utm_campaign=fastapi)
+* [Railway](https://docs.railway.com/guides/fastapi?utm_medium=integration&utm_source=docs&utm_campaign=fastapi)
diff --git a/docs/fr/docs/deployment/concepts.md b/docs/fr/docs/deployment/concepts.md
index 59b8ddd1b..1d5497d93 100644
--- a/docs/fr/docs/deployment/concepts.md
+++ b/docs/fr/docs/deployment/concepts.md
@@ -25,7 +25,7 @@ Mais pour l'instant, voyons ces **idées conceptuelles** importantes. Ces concep
## Sécurité - HTTPS { #security-https }
-Dans le [chapitre précédent à propos de HTTPS](https.md){.internal-link target=_blank}, nous avons vu comment HTTPS fournit le chiffrement pour votre API.
+Dans le [chapitre précédent à propos de HTTPS](https.md), nous avons vu comment HTTPS fournit le chiffrement pour votre API.
Nous avons également vu que HTTPS est normalement fourni par un composant **externe** à votre serveur d'application, un **TLS Termination Proxy**.
@@ -190,7 +190,7 @@ Quand vous exécutez **plusieurs processus** du même programme d'API, on les ap
### Processus workers et ports { #worker-processes-and-ports }
-Rappelez‑vous, d'après les documents [À propos de HTTPS](https.md){.internal-link target=_blank}, qu'un seul processus peut écouter une combinaison de port et d'adresse IP sur un serveur ?
+Rappelez‑vous, d'après les documents [À propos de HTTPS](https.md), qu'un seul processus peut écouter une combinaison de port et d'adresse IP sur un serveur ?
C'est toujours vrai.
@@ -243,7 +243,7 @@ Voici quelques combinaisons et stratégies possibles :
Ne vous inquiétez pas si certains de ces éléments concernant les **conteneurs**, Docker ou Kubernetes ne sont pas encore très clairs.
-Je vous en dirai plus sur les images de conteneurs, Docker, Kubernetes, etc. dans un chapitre à venir : [FastAPI dans des conteneurs - Docker](docker.md){.internal-link target=_blank}.
+Je vous en dirai plus sur les images de conteneurs, Docker, Kubernetes, etc. dans un chapitre à venir : [FastAPI dans des conteneurs - Docker](docker.md).
///
@@ -281,7 +281,7 @@ Voici quelques idées possibles :
/// tip | Astuce
-Je vous donnerai des exemples plus concrets pour faire cela avec des conteneurs dans un chapitre à venir : [FastAPI dans des conteneurs - Docker](docker.md){.internal-link target=_blank}.
+Je vous donnerai des exemples plus concrets pour faire cela avec des conteneurs dans un chapitre à venir : [FastAPI dans des conteneurs - Docker](docker.md).
///
diff --git a/docs/fr/docs/deployment/docker.md b/docs/fr/docs/deployment/docker.md
index 2d86d4a40..1567e1d58 100644
--- a/docs/fr/docs/deployment/docker.md
+++ b/docs/fr/docs/deployment/docker.md
@@ -1,6 +1,6 @@
# FastAPI dans des conteneurs - Docker { #fastapi-in-containers-docker }
-Lors du déploiement d'applications FastAPI, une approche courante consiste à construire une **image de conteneur Linux**. C'est généralement fait avec
**Docker**. Vous pouvez ensuite déployer cette image de conteneur de plusieurs façons possibles.
+Lors du déploiement d'applications FastAPI, une approche courante consiste à construire une **image de conteneur Linux**. C'est généralement fait avec [**Docker**](https://www.docker.com/). Vous pouvez ensuite déployer cette image de conteneur de plusieurs façons possibles.
L'utilisation de conteneurs Linux présente plusieurs avantages, notamment la **sécurité**, la **réplicabilité**, la **simplicité**, entre autres.
@@ -60,16 +60,16 @@ Et le **conteneur** lui-même (par opposition à l'**image de conteneur**) est l
Docker a été l'un des principaux outils pour créer et gérer des **images de conteneur** et des **conteneurs**.
-Et il existe un
Docker Hub public avec des **images de conteneur officielles** pré-construites pour de nombreux outils, environnements, bases de données et applications.
+Et il existe un [Docker Hub](https://hub.docker.com/) public avec des **images de conteneur officielles** pré-construites pour de nombreux outils, environnements, bases de données et applications.
-Par exemple, il existe une
image Python officielle.
+Par exemple, il existe une [image Python officielle](https://hub.docker.com/_/python).
Et il existe beaucoup d'autres images pour différentes choses comme des bases de données, par exemple :
-*
PostgreSQL
-*
MySQL
-*
MongoDB
-*
Redis, etc.
+* [PostgreSQL](https://hub.docker.com/_/postgres)
+* [MySQL](https://hub.docker.com/_/mysql)
+* [MongoDB](https://hub.docker.com/_/mongo)
+* [Redis](https://hub.docker.com/_/redis), etc.
En utilisant une image de conteneur pré-construite, il est très facile de **combiner** et d'utiliser différents outils. Par exemple, pour essayer une nouvelle base de données. Dans la plupart des cas, vous pouvez utiliser les **images officielles** et simplement les configurer avec des variables d'environnement.
@@ -111,7 +111,7 @@ Cela dépendra principalement de l'outil que vous utilisez pour **installer** ce
La manière la plus courante consiste à avoir un fichier `requirements.txt` avec les noms des paquets et leurs versions, un par ligne.
-Vous utiliserez bien sûr les mêmes idées que vous avez lues dans [À propos des versions de FastAPI](versions.md){.internal-link target=_blank} pour définir les plages de versions.
+Vous utiliserez bien sûr les mêmes idées que vous avez lues dans [À propos des versions de FastAPI](versions.md) pour définir les plages de versions.
Par exemple, votre `requirements.txt` pourrait ressembler à :
@@ -238,7 +238,7 @@ Vous devez vous assurer d'utiliser **toujours** la **forme exec** de l'instructi
#### Utiliser `CMD` - Forme Exec { #use-cmd-exec-form }
-L'instruction Docker
`CMD` peut être écrite sous deux formes :
+L'instruction Docker [`CMD`](https://docs.docker.com/reference/dockerfile/#cmd) peut être écrite sous deux formes :
✅ Forme **Exec** :
@@ -254,11 +254,11 @@ CMD ["fastapi", "run", "app/main.py", "--port", "80"]
CMD fastapi run app/main.py --port 80
```
-Assurez-vous d'utiliser toujours la forme **exec** pour garantir que FastAPI peut s'arrêter proprement et que les [événements de cycle de vie](../advanced/events.md){.internal-link target=_blank} sont déclenchés.
+Assurez-vous d'utiliser toujours la forme **exec** pour garantir que FastAPI peut s'arrêter proprement et que les [événements de cycle de vie](../advanced/events.md) sont déclenchés.
-Vous pouvez en lire davantage dans la
documentation Docker sur les formes shell et exec.
+Vous pouvez en lire davantage dans la [documentation Docker sur les formes shell et exec](https://docs.docker.com/reference/dockerfile/#shell-and-exec-form).
-Cela peut être très visible lors de l'utilisation de `docker compose`. Voir cette section de la FAQ Docker Compose pour plus de détails techniques :
Pourquoi mes services mettent-ils 10 secondes à se recréer ou à s'arrêter ?.
+Cela peut être très visible lors de l'utilisation de `docker compose`. Voir cette section de la FAQ Docker Compose pour plus de détails techniques : [Pourquoi mes services mettent-ils 10 secondes à se recréer ou à s'arrêter ?](https://docs.docker.com/compose/faq/#why-do-my-services-take-10-seconds-to-recreate-or-stop).
#### Structure du répertoire { #directory-structure }
@@ -352,7 +352,7 @@ $ docker run -d --name mycontainer -p 80:80 myimage
## Vérifier { #check-it }
-Vous devriez pouvoir le vérifier via l'URL de votre conteneur Docker, par exemple :
http://192.168.99.100/items/5?q=somequery ou
http://127.0.0.1/items/5?q=somequery (ou équivalent, en utilisant votre hôte Docker).
+Vous devriez pouvoir le vérifier via l'URL de votre conteneur Docker, par exemple : [http://192.168.99.100/items/5?q=somequery](http://192.168.99.100/items/5?q=somequery) ou [http://127.0.0.1/items/5?q=somequery](http://127.0.0.1/items/5?q=somequery) (ou équivalent, en utilisant votre hôte Docker).
Vous verrez quelque chose comme :
@@ -362,17 +362,17 @@ Vous verrez quelque chose comme :
## Documentation interactive de l'API { #interactive-api-docs }
-Vous pouvez maintenant aller sur
http://192.168.99.100/docs ou
http://127.0.0.1/docs (ou équivalent, en utilisant votre hôte Docker).
+Vous pouvez maintenant aller sur [http://192.168.99.100/docs](http://192.168.99.100/docs) ou [http://127.0.0.1/docs](http://127.0.0.1/docs) (ou équivalent, en utilisant votre hôte Docker).
-Vous verrez la documentation interactive automatique de l'API (fournie par
Swagger UI) :
+Vous verrez la documentation interactive automatique de l'API (fournie par [Swagger UI](https://github.com/swagger-api/swagger-ui)) :

## Documentation alternative de l'API { #alternative-api-docs }
-Et vous pouvez aussi aller sur
http://192.168.99.100/redoc ou
http://127.0.0.1/redoc (ou équivalent, en utilisant votre hôte Docker).
+Et vous pouvez aussi aller sur [http://192.168.99.100/redoc](http://192.168.99.100/redoc) ou [http://127.0.0.1/redoc](http://127.0.0.1/redoc) (ou équivalent, en utilisant votre hôte Docker).
-Vous verrez la documentation automatique alternative (fournie par
ReDoc) :
+Vous verrez la documentation automatique alternative (fournie par [ReDoc](https://github.com/Rebilly/ReDoc)) :

@@ -413,7 +413,7 @@ Lorsque vous passez le fichier à `fastapi run`, il détectera automatiquement q
## Concepts de déploiement { #deployment-concepts }
-Parlons à nouveau de certains des mêmes [Concepts de déploiement](concepts.md){.internal-link target=_blank} en termes de conteneurs.
+Parlons à nouveau de certains des mêmes [Concepts de déploiement](concepts.md) en termes de conteneurs.
Les conteneurs sont principalement un outil pour simplifier le processus de **construction et de déploiement** d'une application, mais ils n'imposent pas une approche particulière pour gérer ces **concepts de déploiement**, et il existe plusieurs stratégies possibles.
@@ -432,7 +432,7 @@ Passons en revue ces **concepts de déploiement** en termes de conteneurs :
Si l'on se concentre uniquement sur l'**image de conteneur** pour une application FastAPI (et plus tard sur le **conteneur** en cours d'exécution), HTTPS serait normalement géré **à l'extérieur** par un autre outil.
-Cela pourrait être un autre conteneur, par exemple avec
Traefik, gérant **HTTPS** et l'acquisition **automatique** des **certificats**.
+Cela pourrait être un autre conteneur, par exemple avec [Traefik](https://traefik.io/), gérant **HTTPS** et l'acquisition **automatique** des **certificats**.
/// tip | Astuce
@@ -558,7 +558,7 @@ Si vous avez **plusieurs conteneurs**, probablement chacun exécutant un **seul
/// info
-Si vous utilisez Kubernetes, ce sera probablement un
Init Container.
+Si vous utilisez Kubernetes, ce sera probablement un [Init Container](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/).
///
@@ -570,7 +570,7 @@ Si vous avez une configuration simple, avec **un seul conteneur** qui démarre e
### Image Docker de base { #base-docker-image }
-Il existait une image Docker officielle FastAPI :
tiangolo/uvicorn-gunicorn-fastapi. Mais elle est désormais dépréciée. ⛔️
+Il existait une image Docker officielle FastAPI : [tiangolo/uvicorn-gunicorn-fastapi](https://github.com/tiangolo/uvicorn-gunicorn-fastapi-docker). Mais elle est désormais dépréciée. ⛔️
Vous ne devriez probablement **pas** utiliser cette image Docker de base (ni aucune autre similaire).
@@ -600,7 +600,7 @@ Par exemple :
## Image Docker avec `uv` { #docker-image-with-uv }
-Si vous utilisez
uv pour installer et gérer votre projet, vous pouvez suivre leur
guide Docker pour uv.
+Si vous utilisez [uv](https://github.com/astral-sh/uv) pour installer et gérer votre projet, vous pouvez suivre leur [guide Docker pour uv](https://docs.astral.sh/uv/guides/integration/docker/).
## Récapitulatif { #recap }
diff --git a/docs/fr/docs/deployment/fastapicloud.md b/docs/fr/docs/deployment/fastapicloud.md
index 72f275cf6..836e91489 100644
--- a/docs/fr/docs/deployment/fastapicloud.md
+++ b/docs/fr/docs/deployment/fastapicloud.md
@@ -1,6 +1,6 @@
# FastAPI Cloud { #fastapi-cloud }
-Vous pouvez déployer votre application FastAPI sur
FastAPI Cloud avec une **seule commande**, allez vous inscrire sur la liste d’attente si ce n’est pas déjà fait. 🚀
+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 }
@@ -40,7 +40,7 @@ C’est tout ! Vous pouvez maintenant accéder à votre application à cette URL
## À propos de FastAPI Cloud { #about-fastapi-cloud }
-**
FastAPI Cloud** est développé par le même auteur et la même équipe à l’origine de **FastAPI**.
+**[FastAPI Cloud](https://fastapicloud.com)** est développé par le même auteur et la même équipe à l’origine de **FastAPI**.
Cela simplifie le processus de **création**, de **déploiement** et **d’accès** à une API avec un effort minimal.
diff --git a/docs/fr/docs/deployment/https.md b/docs/fr/docs/deployment/https.md
index 1b3c7be56..34922f168 100644
--- a/docs/fr/docs/deployment/https.md
+++ b/docs/fr/docs/deployment/https.md
@@ -10,7 +10,7 @@ Si vous êtes pressé ou si cela ne vous intéresse pas, continuez avec les sect
///
-Pour apprendre les bases du HTTPS, du point de vue d'un utilisateur, consultez
https://howhttps.works/.
+Pour apprendre les bases du HTTPS, du point de vue d'un utilisateur, consultez [https://howhttps.works/](https://howhttps.works/).
Maintenant, du point de vue d'un développeur, voici plusieurs choses à avoir en tête en pensant au HTTPS :
@@ -28,13 +28,13 @@ Maintenant, du point de vue d'un développeur, voici plusieurs choses à avoir e
* **Par défaut**, cela signifie que vous ne pouvez avoir qu'**un seul certificat HTTPS par adresse IP**.
* Quelle que soit la taille de votre serveur ou la petitesse de chacune des applications qu'il contient.
* Il existe cependant une **solution** à ce problème.
-* Il existe une **extension** du protocole **TLS** (celui qui gère le cryptage au niveau TCP, avant HTTP) appelée **
SNI**.
+* Il existe une **extension** du protocole **TLS** (celui qui gère le cryptage au niveau TCP, avant HTTP) appelée **[
SNI](https://en.wikipedia.org/wiki/Server_Name_Indication)**.
* Cette extension SNI permet à un seul serveur (avec une **seule adresse IP**) d'avoir **plusieurs certificats HTTPS** et de servir **plusieurs domaines/applications HTTPS**.
* Pour que cela fonctionne, un **seul** composant (programme) fonctionnant sur le serveur, écoutant sur l'**adresse IP publique**, doit avoir **tous les certificats HTTPS** du serveur.
* **Après** l'établissement d'une connexion sécurisée, le protocole de communication est **toujours HTTP**.
* Le contenu est **crypté**, même s'il est envoyé avec le **protocole HTTP**.
-Il est courant d'avoir **un seul programme/serveur HTTP** fonctionnant sur le serveur (la machine, l'hôte, etc.) et **gérant toutes les parties HTTPS** : recevoir les **requêtes HTTPS chiffrées**, envoyer les **requêtes HTTP déchiffrées** à l'application HTTP réelle fonctionnant sur le même serveur (l'application **FastAPI**, dans ce cas), prendre la **réponse HTTP** de l'application, la **chiffrer** en utilisant le **certificat HTTPS** approprié et la renvoyer au client en utilisant **HTTPS**. Ce serveur est souvent appelé un **
Proxy de terminaison TLS**.
+Il est courant d'avoir **un seul programme/serveur HTTP** fonctionnant sur le serveur (la machine, l'hôte, etc.) et **gérant toutes les parties HTTPS** : recevoir les **requêtes HTTPS chiffrées**, envoyer les **requêtes HTTP déchiffrées** à l'application HTTP réelle fonctionnant sur le même serveur (l'application **FastAPI**, dans ce cas), prendre la **réponse HTTP** de l'application, la **chiffrer** en utilisant le **certificat HTTPS** approprié et la renvoyer au client en utilisant **HTTPS**. Ce serveur est souvent appelé un **[Proxy de terminaison TLS](https://en.wikipedia.org/wiki/TLS_termination_proxy)**.
Parmi les options que vous pourriez utiliser comme Proxy de terminaison TLS :
@@ -49,7 +49,7 @@ Avant Let's Encrypt, ces **certificats HTTPS** étaient vendus par des tiers de
Le processus d'acquisition de l'un de ces certificats était auparavant lourd, nécessitait pas mal de paperasses et les certificats étaient assez chers.
-Mais ensuite, **
Let's Encrypt** a été créé.
+Mais ensuite, **[Let's Encrypt](https://letsencrypt.org/)** a été créé.
Il s'agit d'un projet de la Fondation Linux. Il fournit **des certificats HTTPS gratuitement**, de manière automatisée. Ces certificats utilisent toutes les sécurités cryptographiques standard et ont une durée de vie courte (environ 3 mois), de sorte que la **sécurité est en fait meilleure** en raison de leur durée de vie réduite.
@@ -200,9 +200,9 @@ Ce **proxy** définirait normalement certains en-têtes HTTP à la volée avant
Les en-têtes du proxy sont :
-*
X-Forwarded-For
-*
X-Forwarded-Proto
-*
X-Forwarded-Host
+* [X-Forwarded-For](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/X-Forwarded-For)
+* [X-Forwarded-Proto](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/X-Forwarded-Proto)
+* [X-Forwarded-Host](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/X-Forwarded-Host)
///
@@ -218,7 +218,7 @@ Cela serait utile, par exemple, pour gérer correctement les redirections.
/// tip | Astuce
-Vous pouvez en savoir plus dans la documentation [Derrière un proxy - Activer les en-têtes transmis par le proxy](../advanced/behind-a-proxy.md#enable-proxy-forwarded-headers){.internal-link target=_blank}
+Vous pouvez en savoir plus dans la documentation [Derrière un proxy - Activer les en-têtes transmis par le proxy](../advanced/behind-a-proxy.md#enable-proxy-forwarded-headers)
///
diff --git a/docs/fr/docs/deployment/index.md b/docs/fr/docs/deployment/index.md
index 3b08e9af7..811d68160 100644
--- a/docs/fr/docs/deployment/index.md
+++ b/docs/fr/docs/deployment/index.md
@@ -22,7 +22,7 @@ utilisez.
Vous pouvez **déployer un serveur** vous-même en utilisant une combinaison d'outils, vous pouvez utiliser un **service
cloud** qui fait une partie du travail pour vous, ou encore d'autres options possibles.
-Par exemple, nous, l'équipe derrière FastAPI, avons créé
**FastAPI Cloud**, pour rendre le déploiement d'applications FastAPI dans le cloud aussi fluide que possible, avec la même expérience développeur que lorsque vous travaillez avec FastAPI.
+Par exemple, nous, l'équipe derrière FastAPI, avons créé [**FastAPI Cloud**](https://fastapicloud.com), pour rendre le déploiement d'applications FastAPI dans le cloud aussi fluide que possible, avec la même expérience développeur que lorsque vous travaillez avec FastAPI.
Je vais vous montrer certains des principaux concepts que vous devriez probablement avoir à l'esprit lors du déploiement
d'une application **FastAPI** (bien que la plupart de ces concepts s'appliquent à tout autre type d'application web).
diff --git a/docs/fr/docs/deployment/manually.md b/docs/fr/docs/deployment/manually.md
index c0c388b02..4b87df993 100644
--- a/docs/fr/docs/deployment/manually.md
+++ b/docs/fr/docs/deployment/manually.md
@@ -52,11 +52,11 @@ La principale chose dont vous avez besoin pour exécuter une application **FastA
Il existe plusieurs alternatives, notamment :
-*
Uvicorn : un serveur ASGI haute performance.
-*
Hypercorn : un serveur ASGI compatible avec HTTP/2 et Trio entre autres fonctionnalités.
-*
Daphne : le serveur ASGI conçu pour Django Channels.
-*
Granian : un serveur HTTP Rust pour les applications Python.
-*
NGINX Unit : NGINX Unit est un environnement d'exécution d'applications web léger et polyvalent.
+* [Uvicorn](https://www.uvicorn.dev/) : un serveur ASGI haute performance.
+* [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 }
@@ -74,7 +74,7 @@ Lorsque vous installez FastAPI, il est fourni avec un serveur de production, Uvi
Mais vous pouvez également installer un serveur ASGI manuellement.
-Vous devez créer un [environnement virtuel](../virtual-environments.md){.internal-link target=_blank}, l'activer, puis vous pouvez installer l'application serveur.
+Vous devez créer un [environnement virtuel](../virtual-environments.md), l'activer, puis vous pouvez installer l'application serveur.
Par exemple, pour installer Uvicorn :
diff --git a/docs/fr/docs/deployment/server-workers.md b/docs/fr/docs/deployment/server-workers.md
index 338a5003d..c0eca2dcc 100644
--- a/docs/fr/docs/deployment/server-workers.md
+++ b/docs/fr/docs/deployment/server-workers.md
@@ -5,7 +5,7 @@ Reprenons ces concepts de déploiement vus précédemment :
* Sécurité - HTTPS
* Exécution au démarrage
* Redémarrages
-* Réplication (le nombre de processus en cours d'exécution)
+* **Réplication (le nombre de processus en cours d'exécution)**
* Mémoire
* Étapes préalables avant le démarrage
@@ -13,15 +13,15 @@ Jusqu'à présent, avec tous les tutoriels dans les documents, vous avez probabl
Lors du déploiement d'applications, vous voudrez probablement avoir une réplication de processus pour tirer parti de plusieurs cœurs et pouvoir gérer davantage de requêtes.
-Comme vous l'avez vu dans le chapitre précédent sur les [Concepts de déploiement](concepts.md){.internal-link target=_blank}, il existe plusieurs stratégies possibles.
+Comme vous l'avez vu dans le chapitre précédent sur les [Concepts de déploiement](concepts.md), il existe plusieurs stratégies possibles.
Ici, je vais vous montrer comment utiliser Uvicorn avec des processus workers en utilisant la commande `fastapi` ou directement la commande `uvicorn`.
/// info | Info
-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){.internal-link target=_blank}.
+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).
-En particulier, lorsque vous exécutez sur Kubernetes, vous ne voudrez probablement pas utiliser de workers et plutôt exécuter un seul processus Uvicorn par conteneur, mais je vous en parlerai plus en détail dans ce chapitre.
+En particulier, lorsque vous exécutez sur **Kubernetes**, vous ne voudrez probablement **pas** utiliser de workers et plutôt exécuter **un seul processus Uvicorn par conteneur**, mais je vous en parlerai plus en détail dans ce chapitre.
///
@@ -109,7 +109,7 @@ $ uvicorn main:app --host 0.0.0.0 --port 8080 --workers 4
La seule option nouvelle ici est `--workers` qui indique à Uvicorn de démarrer 4 processus workers.
-Vous pouvez aussi voir qu'il affiche le PID de chaque processus, `27365` pour le processus parent (c'est le gestionnaire de processus) et un pour chaque processus worker : `27368`, `27369`, `27370` et `27367`.
+Vous pouvez aussi voir qu'il affiche le **PID** de chaque processus, `27365` pour le processus parent (c'est le **gestionnaire de processus**) et un pour chaque processus worker : `27368`, `27369`, `27370` et `27367`.
## Concepts de déploiement { #deployment-concepts }
@@ -117,23 +117,23 @@ Ici, vous avez vu comment utiliser plusieurs workers pour paralléliser l'exécu
Dans la liste des concepts de déploiement ci-dessus, l'utilisation de workers aide principalement à la partie réplication, et un peu aux redémarrages, mais vous devez toujours vous occuper des autres :
-* Sécurité - HTTPS
-* Exécution au démarrage
+* **Sécurité - HTTPS**
+* **Exécution au démarrage**
* ***Redémarrages***
* Réplication (le nombre de processus en cours d'exécution)
-* Mémoire
-* Étapes préalables avant le démarrage
+* **Mémoire**
+* **Étapes préalables avant le démarrage**
## Conteneurs et Docker { #containers-and-docker }
-Dans le prochain chapitre sur [FastAPI dans des conteneurs - Docker](docker.md){.internal-link target=_blank}, j'expliquerai quelques stratégies que vous pourriez utiliser pour gérer les autres concepts de déploiement.
+Dans le prochain chapitre sur [FastAPI dans des conteneurs - Docker](docker.md), j'expliquerai quelques stratégies que vous pourriez utiliser pour gérer les autres **concepts de déploiement**.
-Je vous montrerai comment créer votre propre image à partir de zéro pour exécuter un seul processus Uvicorn. C'est un processus simple et c'est probablement ce que vous voudrez faire lorsque vous utilisez un système distribué de gestion de conteneurs comme Kubernetes.
+Je vous montrerai comment créer votre propre image à partir de zéro pour exécuter un seul processus Uvicorn. C'est un processus simple et c'est probablement ce que vous voudrez faire lorsque vous utilisez un système distribué de gestion de conteneurs comme **Kubernetes**.
## Récapitulatif { #recap }
-Vous pouvez utiliser plusieurs processus workers avec l'option CLI `--workers` des commandes `fastapi` ou `uvicorn` pour tirer parti des CPU multicœurs, et exécuter plusieurs processus en parallèle.
+Vous pouvez utiliser plusieurs processus workers avec l'option CLI `--workers` des commandes `fastapi` ou `uvicorn` pour tirer parti des **CPU multicœurs**, et exécuter **plusieurs processus en parallèle**.
Vous pourriez utiliser ces outils et idées si vous mettez en place votre propre système de déploiement tout en prenant vous-même en charge les autres concepts de déploiement.
-Consultez le prochain chapitre pour en savoir plus sur FastAPI avec des conteneurs (par exemple Docker et Kubernetes). Vous verrez que ces outils offrent aussi des moyens simples de résoudre les autres concepts de déploiement. ✨
+Consultez le prochain chapitre pour en savoir plus sur **FastAPI** avec des conteneurs (par exemple Docker et Kubernetes). Vous verrez que ces outils offrent aussi des moyens simples de résoudre les autres **concepts de déploiement**. ✨
diff --git a/docs/fr/docs/deployment/versions.md b/docs/fr/docs/deployment/versions.md
index 81794428f..8787bc3de 100644
--- a/docs/fr/docs/deployment/versions.md
+++ b/docs/fr/docs/deployment/versions.md
@@ -4,7 +4,7 @@
De nouvelles fonctionnalités sont ajoutées fréquemment, des bogues sont corrigés régulièrement et le code s'améliore continuellement.
-C'est pourquoi les versions actuelles sont toujours `0.x.x`, cela reflète que chaque version pourrait potentiellement comporter des changements non rétrocompatibles. Cela suit les conventions de
versionnage sémantique.
+C'est pourquoi les versions actuelles sont toujours `0.x.x`, cela reflète que chaque version pourrait potentiellement comporter des changements non rétrocompatibles. Cela suit les conventions de [versionnage sémantique](https://semver.org/).
Vous pouvez créer des applications de production avec **FastAPI** dès maintenant (et vous le faites probablement depuis un certain temps), vous devez juste vous assurer que vous utilisez une version qui fonctionne correctement avec le reste de votre code.
@@ -34,7 +34,7 @@ Si vous utilisez un autre outil pour gérer vos installations, comme `uv`, Poetr
## Versions disponibles { #available-versions }
-Vous pouvez consulter les versions disponibles (par exemple, pour vérifier quelle est la dernière version en date) dans les [Notes de version](../release-notes.md){.internal-link target=_blank}.
+Vous pouvez consulter les versions disponibles (par exemple, pour vérifier quelle est la dernière version en date) dans les [Notes de version](../release-notes.md).
## À propos des versions { #about-versions }
@@ -66,7 +66,7 @@ Le « MINOR » est le numéro au milieu, par exemple, dans `0.2.3`, la version M
Vous devez ajouter des tests pour votre application.
-Avec **FastAPI** c'est très facile (merci à Starlette), consultez les documents : [Tests](../tutorial/testing.md){.internal-link target=_blank}
+Avec **FastAPI** c'est très facile (merci à Starlette), consultez les documents : [Tests](../tutorial/testing.md)
Après avoir des tests, vous pouvez mettre à niveau la version de **FastAPI** vers une version plus récente et vous assurer que tout votre code fonctionne correctement en exécutant vos tests.
diff --git a/docs/fr/docs/environment-variables.md b/docs/fr/docs/environment-variables.md
index 57479852a..7f052f27f 100644
--- a/docs/fr/docs/environment-variables.md
+++ b/docs/fr/docs/environment-variables.md
@@ -65,7 +65,7 @@ print(f"Hello {name} from Python")
/// tip | Astuce
-Le deuxième argument de
`os.getenv()` est la valeur par défaut à retourner.
+Le deuxième argument de [`os.getenv()`](https://docs.python.org/3.8/library/os.html#os.getenv) est la valeur par défaut à retourner.
S'il n'est pas fourni, c'est `None` par défaut ; ici, nous fournissons `"World"` comme valeur par défaut à utiliser.
@@ -153,7 +153,7 @@ Hello World from Python
/// tip | Astuce
-Vous pouvez en lire davantage sur
The Twelve-Factor App : Config.
+Vous pouvez en lire davantage sur [The Twelve-Factor App : Config](https://12factor.net/config).
///
@@ -163,7 +163,7 @@ Ces variables d'environnement ne peuvent gérer que des **chaînes de texte**, c
Cela signifie que **toute valeur** lue en Python à partir d'une variable d'environnement **sera une `str`**, et que toute conversion vers un autre type ou toute validation doit être effectuée dans le code.
-Vous en apprendrez davantage sur l'utilisation des variables d'environnement pour gérer les **paramètres d'application** dans le [Guide utilisateur avancé - Paramètres et variables d'environnement](./advanced/settings.md){.internal-link target=_blank}.
+Vous en apprendrez davantage sur l'utilisation des variables d'environnement pour gérer les **paramètres d'application** dans le [Guide utilisateur avancé - Paramètres et variables d'environnement](./advanced/settings.md).
## Variable d'environnement `PATH` { #path-environment-variable }
@@ -285,13 +285,13 @@ $ C:\opt\custompython\bin\python
////
-Ces informations vous seront utiles lors de l'apprentissage des [Environnements virtuels](virtual-environments.md){.internal-link target=_blank}.
+Ces informations vous seront utiles lors de l'apprentissage des [Environnements virtuels](virtual-environments.md).
## Conclusion { #conclusion }
Avec cela, vous devriez avoir une compréhension de base de ce que sont les **variables d'environnement** et de la façon de les utiliser en Python.
-Vous pouvez également en lire davantage sur la
page Wikipédia dédiée aux variables d'environnement.
+Vous pouvez également en lire davantage sur la [page Wikipédia dédiée aux variables d'environnement](https://en.wikipedia.org/wiki/Environment_variable).
Dans de nombreux cas, il n'est pas évident de voir immédiatement en quoi les variables d'environnement seraient utiles et applicables. Mais elles réapparaissent dans de nombreux scénarios lorsque vous développez, il est donc bon de les connaître.
diff --git a/docs/fr/docs/fastapi-cli.md b/docs/fr/docs/fastapi-cli.md
index 9f31e8a2f..03ef75adc 100644
--- a/docs/fr/docs/fastapi-cli.md
+++ b/docs/fr/docs/fastapi-cli.md
@@ -1,15 +1,15 @@
# FastAPI CLI { #fastapi-cli }
-**FastAPI CLI** est un programme en ligne de commande que vous pouvez utiliser pour servir votre application FastAPI, gérer votre projet FastAPI, et plus encore.
+**FastAPI
CLI** est un programme en ligne de commande que vous pouvez utiliser pour servir votre application FastAPI, gérer votre projet FastAPI, et plus encore.
-Lorsque vous installez FastAPI (par exemple avec `pip install "fastapi[standard]"`), cela inclut un package appelé `fastapi-cli` ; ce package fournit la commande `fastapi` dans le terminal.
+Lorsque vous installez FastAPI (par exemple avec `pip install "fastapi[standard]"`), il est fourni avec un programme en ligne de commande que vous pouvez exécuter dans le terminal.
Pour exécuter votre application FastAPI en développement, vous pouvez utiliser la commande `fastapi dev` :
```console
-$
fastapi dev
main.py
+$
fastapi dev
FastAPI Starting development server 🚀
@@ -46,13 +46,66 @@ $
fastapi dev
Uvicorn, un serveur ASGI haute performance, prêt pour la production. 😎
+En interne, **FastAPI CLI** utilise [Uvicorn](https://www.uvicorn.dev), un serveur ASGI haute performance, prêt pour la production. 😎
+
+La CLI `fastapi` tentera de détecter automatiquement l’application FastAPI à exécuter, en supposant qu’il s’agit d’un objet nommé `app` dans un fichier `main.py` (ou quelques autres variantes).
+
+Mais vous pouvez configurer explicitement l’application à utiliser.
+
+## Configurer le `entrypoint` de l’application dans `pyproject.toml` { #configure-the-app-entrypoint-in-pyproject-toml }
+
+Vous pouvez configurer l’endroit où se trouve votre application dans un fichier `pyproject.toml` comme suit :
+
+```toml
+[tool.fastapi]
+entrypoint = "main:app"
+```
+
+Cet `entrypoint` indiquera à la commande `fastapi` qu’elle doit importer l’application comme ceci :
+
+```python
+from main import app
+```
+
+Si votre code était structuré comme ceci :
+
+```
+.
+├── backend
+│ ├── main.py
+│ ├── __init__.py
+```
+
+Vous définiriez alors le `entrypoint` comme suit :
+
+```toml
+[tool.fastapi]
+entrypoint = "backend.main:app"
+```
+
+ce qui serait équivalent à :
+
+```python
+from backend.main import app
+```
+
+### `fastapi dev` avec un chemin { #fastapi-dev-with-path }
+
+Vous pouvez également passer le chemin du fichier à la commande `fastapi dev`, et elle devinera l’objet d’application FastAPI à utiliser :
+
+```console
+$ fastapi dev main.py
+```
+
+Mais vous devez vous rappeler de passer le bon chemin à chaque fois que vous appelez la commande `fastapi`.
+
+De plus, d’autres outils pourraient ne pas pouvoir 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`.
## `fastapi dev` { #fastapi-dev }
@@ -70,6 +123,6 @@ Dans la plupart des cas, vous avez (et devez avoir) un « termination proxy » a
/// tip | Astuce
-Vous pouvez en savoir plus à ce sujet dans la [documentation de déploiement](deployment/index.md){.internal-link target=_blank}.
+Vous pouvez en savoir plus à ce sujet dans la [documentation de déploiement](deployment/index.md).
///
diff --git a/docs/fr/docs/features.md b/docs/fr/docs/features.md
index e5e809940..7fae1d881 100644
--- a/docs/fr/docs/features.md
+++ b/docs/fr/docs/features.md
@@ -6,8 +6,8 @@
### Basé sur des standards ouverts { #based-on-open-standards }
-* OpenAPI pour la création d'API, incluant la déclaration de chemin opérations, paramètres, corps de requêtes, sécurité, etc.
-* Documentation automatique des modèles de données avec JSON Schema (puisque OpenAPI est lui-même basé sur JSON Schema).
+* [**OpenAPI**](https://github.com/OAI/OpenAPI-Specification) pour la création d'API, incluant la déclaration de chemin opérations, paramètres, corps de requêtes, sécurité, etc.
+* Documentation automatique des modèles de données avec [**JSON Schema**](https://json-schema.org/) (puisque OpenAPI est lui-même basé sur JSON Schema).
* Conçu autour de ces standards, après une étude méticuleuse. Plutôt qu'une couche ajoutée après coup.
* Cela permet également d'utiliser la **génération automatique de code client** dans de nombreux langages.
@@ -15,11 +15,11 @@
Documentation d'API interactive et interfaces web d'exploration. Comme le framework est basé sur OpenAPI, plusieurs options existent, 2 incluses par défaut.
-* Swagger UI, avec exploration interactive, appelez et testez votre API directement depuis le navigateur.
+* [**Swagger UI**](https://github.com/swagger-api/swagger-ui), avec exploration interactive, appelez et testez votre API directement depuis le navigateur.

-* Documentation d'API alternative avec ReDoc.
+* Documentation d'API alternative avec [**ReDoc**](https://github.com/Rebilly/ReDoc).

@@ -27,7 +27,7 @@ Documentation d'API interactive et interfaces web d'exploration. Comme le framew
Tout est basé sur les déclarations de **types Python** standard (grâce à Pydantic). Aucune nouvelle syntaxe à apprendre. Juste du Python moderne standard.
-Si vous avez besoin d'un rappel de 2 minutes sur l'utilisation des types en Python (même si vous n'utilisez pas FastAPI), consultez le court tutoriel : [Types Python](python-types.md){.internal-link target=_blank}.
+Si vous avez besoin d'un rappel de 2 minutes sur l'utilisation des types en Python (même si vous n'utilisez pas FastAPI), consultez le court tutoriel : [Types Python](python-types.md).
Vous écrivez du Python standard avec des types :
@@ -75,7 +75,7 @@ Passez les clés et valeurs du dictionnaire `second_user_data` directement comme
Tout le framework a été conçu pour être facile et intuitif à utiliser, toutes les décisions ont été testées sur plusieurs éditeurs avant même de commencer le développement, pour assurer la meilleure expérience de développement.
-Dans les enquêtes auprès des développeurs Python, il est clair que l’une des fonctionnalités les plus utilisées est « autocomplétion ».
+Dans les enquêtes auprès des développeurs Python, il est clair [que l’une des fonctionnalités les plus utilisées est « autocomplétion »](https://www.jetbrains.com/research/python-developers-survey-2017/#tools-and-features).
L'ensemble du framework **FastAPI** est conçu pour satisfaire cela. L'autocomplétion fonctionne partout.
@@ -83,11 +83,11 @@ Vous aurez rarement besoin de revenir aux documents.
Voici comment votre éditeur peut vous aider :
-* dans Visual Studio Code :
+* dans [Visual Studio Code](https://code.visualstudio.com/) :

-* dans PyCharm :
+* dans [PyCharm](https://www.jetbrains.com/pycharm/) :

@@ -124,7 +124,7 @@ Sécurité et authentification intégrées. Sans aucun compromis avec les bases
Tous les schémas de sécurité définis dans OpenAPI, y compris :
* HTTP Basic.
-* **OAuth2** (également avec des **tokens JWT**). Consultez le tutoriel [OAuth2 avec JWT](tutorial/security/oauth2-jwt.md){.internal-link target=_blank}.
+* **OAuth2** (également avec des **tokens JWT**). Consultez le tutoriel [OAuth2 avec JWT](tutorial/security/oauth2-jwt.md).
* Clés d'API dans :
* les en-têtes.
* les paramètres de requête.
@@ -159,13 +159,13 @@ Toute intégration est conçue pour être si simple à utiliser (avec des dépen
## Fonctionnalités de Starlette { #starlette-features }
-**FastAPI** est entièrement compatible avec (et basé sur) Starlette. Donc, tout code Starlette additionnel que vous avez fonctionnera aussi.
+**FastAPI** est entièrement compatible avec (et basé sur) [**Starlette**](https://www.starlette.dev/). Donc, tout code Starlette additionnel que vous avez fonctionnera aussi.
`FastAPI` est en fait une sous-classe de `Starlette`. Ainsi, si vous connaissez ou utilisez déjà Starlette, la plupart des fonctionnalités fonctionneront de la même manière.
Avec **FastAPI** vous obtenez toutes les fonctionnalités de **Starlette** (puisque FastAPI est juste Starlette sous stéroïdes) :
-* Des performances vraiment impressionnantes. C'est l’un des frameworks Python les plus rapides disponibles, à l’égal de **NodeJS** et **Go**.
+* Des performances vraiment impressionnantes. C'est [l’un des frameworks Python les plus rapides disponibles, à l’égal de **NodeJS** et **Go**](https://github.com/encode/starlette#performance).
* Prise en charge des **WebSocket**.
* Tâches d'arrière-plan dans le processus.
* Évènements de démarrage et d'arrêt.
@@ -177,7 +177,7 @@ Avec **FastAPI** vous obtenez toutes les fonctionnalités de **Starlette** (puis
## Fonctionnalités de Pydantic { #pydantic-features }
-**FastAPI** est entièrement compatible avec (et basé sur) Pydantic. Donc, tout code Pydantic additionnel que vous avez fonctionnera aussi.
+**FastAPI** est entièrement compatible avec (et basé sur) [**Pydantic**](https://docs.pydantic.dev/). Donc, tout code Pydantic additionnel que vous avez fonctionnera aussi.
Y compris des bibliothèques externes également basées sur Pydantic, servant d’ORM, d’ODM pour les bases de données.
diff --git a/docs/fr/docs/help-fastapi.md b/docs/fr/docs/help-fastapi.md
index 08d9a7a72..e24809d6a 100644
--- a/docs/fr/docs/help-fastapi.md
+++ b/docs/fr/docs/help-fastapi.md
@@ -12,7 +12,7 @@ Et il existe aussi plusieurs façons d'obtenir de l'aide.
## S'abonner à la newsletter { #subscribe-to-the-newsletter }
-Vous pouvez vous abonner à la (peu fréquente) [newsletter **FastAPI and friends**](newsletter.md){.internal-link target=_blank} pour rester informé à propos :
+Vous pouvez vous abonner à la (peu fréquente) [newsletter **FastAPI and friends**](newsletter.md) pour rester informé à propos :
* Nouvelles sur FastAPI et ses amis 🚀
* Guides 📝
@@ -22,17 +22,17 @@ Vous pouvez vous abonner à la (peu fréquente) [newsletter **FastAPI and friend
## Suivre FastAPI sur X (Twitter) { #follow-fastapi-on-x-twitter }
-Suivez @fastapi sur **X (Twitter)** pour obtenir les dernières nouvelles sur **FastAPI**. 🐦
+[Suivez @fastapi sur **X (Twitter)**](https://x.com/fastapi) pour obtenir les dernières nouvelles sur **FastAPI**. 🐦
## Mettre une étoile à **FastAPI** sur GitHub { #star-fastapi-in-github }
-Vous pouvez « star » FastAPI sur GitHub (en cliquant sur le bouton étoile en haut à droite) : https://github.com/fastapi/fastapi. ⭐️
+Vous pouvez « star » FastAPI sur GitHub (en cliquant sur le bouton étoile en haut à droite) : [https://github.com/fastapi/fastapi](https://github.com/fastapi/fastapi). ⭐️
En ajoutant une étoile, les autres utilisateurs pourront le trouver plus facilement et voir qu'il a déjà été utile à d'autres.
## Suivre le dépôt GitHub pour les releases { #watch-the-github-repository-for-releases }
-Vous pouvez « watch » FastAPI sur GitHub (en cliquant sur le bouton « watch » en haut à droite) : https://github.com/fastapi/fastapi. 👀
+Vous pouvez « watch » FastAPI sur GitHub (en cliquant sur le bouton « watch » en haut à droite) : [https://github.com/fastapi/fastapi](https://github.com/fastapi/fastapi). 👀
Vous pouvez y sélectionner « Releases only ».
@@ -40,45 +40,45 @@ Ainsi, vous recevrez des notifications (par e‑mail) chaque fois qu'il y aura u
## Entrer en contact avec l'auteur { #connect-with-the-author }
-Vous pouvez entrer en contact avec moi (Sebastián Ramírez / `tiangolo`), l'auteur.
+Vous pouvez entrer en contact avec [moi (Sebastián Ramírez / `tiangolo`)](https://tiangolo.com), l'auteur.
Vous pouvez :
-* Me suivre sur **GitHub**.
+* [Me suivre sur **GitHub**](https://github.com/tiangolo).
* Voir d'autres projets Open Source que j'ai créés et qui pourraient vous aider.
* Me suivre pour voir quand je crée un nouveau projet Open Source.
-* Me suivre sur **X (Twitter)** ou sur Mastodon.
+* [Me suivre sur **X (Twitter)**](https://x.com/tiangolo) ou sur [Mastodon](https://fosstodon.org/@tiangolo).
* Me dire comment vous utilisez FastAPI (j'adore l'entendre).
* Être informé quand je fais des annonces ou publie de nouveaux outils.
- * Vous pouvez aussi suivre @fastapi sur X (Twitter) (un compte séparé).
-* Me suivre sur **LinkedIn**.
+ * Vous pouvez aussi [suivre @fastapi sur X (Twitter)](https://x.com/fastapi) (un compte séparé).
+* [Me suivre sur **LinkedIn**](https://www.linkedin.com/in/tiangolo/).
* Être informé quand je fais des annonces ou publie de nouveaux outils (même si j'utilise plus souvent X (Twitter) 🤷♂).
-* Lire ce que j'écris (ou me suivre) sur **Dev.to** ou **Medium**.
+* Lire ce que j'écris (ou me suivre) sur [**Dev.to**](https://dev.to/tiangolo) ou [**Medium**](https://medium.com/@tiangolo).
* Lire d'autres idées, des articles, et découvrir des outils que j'ai créés.
* Me suivre pour lire quand je publie quelque chose de nouveau.
## Tweeter à propos de **FastAPI** { #tweet-about-fastapi }
-Tweetez à propos de **FastAPI** et faites savoir à moi et aux autres pourquoi vous l'appréciez. 🎉
+[Tweetez à propos de **FastAPI**](https://x.com/compose/tweet?text=I'm loving @fastapi because... https://github.com/fastapi/fastapi) et faites savoir à moi et aux autres pourquoi vous l'appréciez. 🎉
J'adore entendre comment **FastAPI** est utilisé, ce que vous avez aimé, dans quel projet/quelle entreprise vous l'utilisez, etc.
## Voter pour FastAPI { #vote-for-fastapi }
-* Votez pour **FastAPI** sur Slant.
-* Votez pour **FastAPI** sur AlternativeTo.
-* Indiquez que vous utilisez **FastAPI** sur StackShare.
+* [Votez pour **FastAPI** sur Slant](https://www.slant.co/options/34241/~fastapi-review).
+* [Votez pour **FastAPI** sur AlternativeTo](https://alternativeto.net/software/fastapi/about/).
+* [Indiquez que vous utilisez **FastAPI** sur StackShare](https://stackshare.io/pypi-fastapi).
## Aider les autres avec des questions sur GitHub { #help-others-with-questions-in-github }
Vous pouvez essayer d'aider les autres avec leurs questions dans :
-* GitHub Discussions
-* GitHub Issues
+* [GitHub Discussions](https://github.com/fastapi/fastapi/discussions/categories/questions?discussions_q=category%3AQuestions+is%3Aunanswered)
+* [GitHub Issues](https://github.com/fastapi/fastapi/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3Aquestion+-label%3Aanswered+)
Dans de nombreux cas, vous connaissez peut-être déjà la réponse à ces questions. 🤓
-Si vous aidez beaucoup de personnes avec leurs questions, vous deviendrez un [Expert FastAPI](fastapi-people.md#fastapi-experts){.internal-link target=_blank} officiel. 🎉
+Si vous aidez beaucoup de personnes avec leurs questions, vous deviendrez un [Expert FastAPI](fastapi-people.md#fastapi-experts) officiel. 🎉
N'oubliez pas, le point le plus important est : essayez d'être aimable. Les gens viennent avec leurs frustrations et, dans bien des cas, ne posent pas la question de la meilleure façon, mais faites de votre mieux pour rester aimable. 🤗
@@ -104,7 +104,7 @@ Dans la plupart des cas et pour la plupart des questions, il y a quelque chose l
Dans de nombreux cas, elle ne copiera qu'un fragment de code, mais ce n'est pas suffisant pour **reproduire le problème**.
-* Vous pouvez leur demander de fournir un exemple minimal, complet et vérifiable, que vous pouvez **copier‑coller** et exécuter localement pour voir la même erreur ou le même comportement qu'ils observent, ou pour mieux comprendre leur cas d'utilisation.
+* Vous pouvez leur demander de fournir un [exemple minimal, complet et vérifiable](https://stackoverflow.com/help/minimal-reproducible-example), que vous pouvez **copier‑coller** et exécuter localement pour voir la même erreur ou le même comportement qu'ils observent, ou pour mieux comprendre leur cas d'utilisation.
* Si vous vous sentez très généreux, vous pouvez essayer de **créer un tel exemple** vous‑même, simplement à partir de la description du problème. Gardez simplement à l'esprit que cela peut prendre beaucoup de temps et qu'il peut être préférable de leur demander d'abord de clarifier le problème.
@@ -125,7 +125,7 @@ S'ils répondent, il y a de fortes chances que vous ayez résolu leur problème,
## Suivre le dépôt GitHub { #watch-the-github-repository }
-Vous pouvez « watch » FastAPI sur GitHub (en cliquant sur le bouton « watch » en haut à droite) : https://github.com/fastapi/fastapi. 👀
+Vous pouvez « watch » FastAPI sur GitHub (en cliquant sur le bouton « watch » en haut à droite) : [https://github.com/fastapi/fastapi](https://github.com/fastapi/fastapi). 👀
Si vous sélectionnez « Watching » au lieu de « Releases only », vous recevrez des notifications lorsque quelqu'un crée une nouvelle issue ou question. Vous pouvez aussi préciser que vous ne souhaitez être notifié que pour les nouvelles issues, ou les discussions, ou les PR, etc.
@@ -133,7 +133,7 @@ Vous pouvez alors essayer de les aider à résoudre ces questions.
## Poser des questions { #ask-questions }
-Vous pouvez créer une nouvelle question dans le dépôt GitHub, par exemple pour :
+Vous pouvez [créer une nouvelle question](https://github.com/fastapi/fastapi/discussions/new?category=questions) dans le dépôt GitHub, par exemple pour :
* Poser une **question** ou demander à propos d'un **problème**.
* Suggérer une nouvelle **fonctionnalité**.
@@ -196,12 +196,12 @@ Donc, il est vraiment important que vous lisiez et exécutiez le code, et que vo
## Créer une Pull Request { #create-a-pull-request }
-Vous pouvez [contribuer](contributing.md){.internal-link target=_blank} au code source avec des Pull Requests, par exemple :
+Vous pouvez [contribuer](contributing.md) au code source avec des Pull Requests, par exemple :
* Corriger une coquille que vous avez trouvée dans la documentation.
-* Partager un article, une vidéo ou un podcast que vous avez créé ou trouvé à propos de FastAPI en modifiant ce fichier.
+* Partager un article, une vidéo ou un podcast que vous avez créé ou trouvé à propos de FastAPI en [modifiant ce fichier](https://github.com/fastapi/fastapi/edit/master/docs/en/data/external_links.yml).
* Vous devez vous assurer d'ajouter votre lien au début de la section correspondante.
-* Aider à [traduire la documentation](contributing.md#translations){.internal-link target=_blank} dans votre langue.
+* Aider à [traduire la documentation](contributing.md#translations) dans votre langue.
* Vous pouvez aussi aider à relire les traductions créées par d'autres.
* Proposer de nouvelles sections de documentation.
* Corriger une issue/un bug existant.
@@ -218,8 +218,8 @@ Il y a beaucoup de travail à faire, et pour la plupart, **VOUS** pouvez le fair
Les principales tâches que vous pouvez faire dès maintenant sont :
-* [Aider les autres avec des questions sur GitHub](#help-others-with-questions-in-github){.internal-link target=_blank} (voir la section ci‑dessus).
-* [Relire des Pull Requests](#review-pull-requests){.internal-link target=_blank} (voir la section ci‑dessus).
+* [Aider les autres avec des questions sur GitHub](#help-others-with-questions-in-github) (voir la section ci‑dessus).
+* [Relire des Pull Requests](#review-pull-requests) (voir la section ci‑dessus).
Ces deux tâches sont celles qui **consomment le plus de temps**. C'est le travail principal de la maintenance de FastAPI.
@@ -227,11 +227,11 @@ Si vous pouvez m'aider avec cela, **vous m'aidez à maintenir FastAPI** et à vo
## Rejoindre le chat { #join-the-chat }
-Rejoignez le 👥 serveur Discord 👥 et échangez avec d'autres membres de la communauté FastAPI.
+Rejoignez le 👥 [serveur Discord](https://discord.gg/VQjSZaeJmf) 👥 et échangez avec d'autres membres de la communauté FastAPI.
/// tip | Astuce
-Pour les questions, posez‑les dans GitHub Discussions, vous avez bien plus de chances de recevoir de l'aide par les [Experts FastAPI](fastapi-people.md#fastapi-experts){.internal-link target=_blank}.
+Pour les questions, posez‑les dans [GitHub Discussions](https://github.com/fastapi/fastapi/discussions/new?category=questions), vous avez bien plus de chances de recevoir de l'aide par les [Experts FastAPI](fastapi-people.md#fastapi-experts).
Utilisez le chat uniquement pour d'autres conversations générales.
@@ -243,13 +243,13 @@ Gardez à l'esprit que, comme les chats permettent une « conversation libre »,
Sur GitHub, le modèle vous guidera pour rédiger la bonne question afin que vous puissiez plus facilement obtenir une bonne réponse, ou même résoudre le problème vous‑même avant de demander. Et sur GitHub, je peux m'assurer de toujours tout répondre, même si cela prend du temps. Je ne peux pas personnellement faire cela avec les systèmes de chat. 😅
-Les conversations dans les systèmes de chat ne sont pas non plus aussi facilement recherchables que sur GitHub, donc les questions et réponses peuvent se perdre dans la conversation. Et seules celles sur GitHub comptent pour devenir un [Expert FastAPI](fastapi-people.md#fastapi-experts){.internal-link target=_blank}, vous aurez donc très probablement plus d'attention sur GitHub.
+Les conversations dans les systèmes de chat ne sont pas non plus aussi facilement recherchables que sur GitHub, donc les questions et réponses peuvent se perdre dans la conversation. Et seules celles sur GitHub comptent pour devenir un [Expert FastAPI](fastapi-people.md#fastapi-experts), vous aurez donc très probablement plus d'attention sur GitHub.
D'un autre côté, il y a des milliers d'utilisateurs dans les systèmes de chat, il y a donc de fortes chances que vous trouviez presque toujours quelqu'un avec qui parler. 😄
## Sponsoriser l'auteur { #sponsor-the-author }
-Si votre **produit/entreprise** dépend de **FastAPI** ou y est lié et que vous souhaitez atteindre ses utilisateurs, vous pouvez sponsoriser l'auteur (moi) via GitHub sponsors. Selon le niveau, vous pourriez obtenir des avantages supplémentaires, comme un badge dans la documentation. 🎁
+Si votre **produit/entreprise** dépend de **FastAPI** ou y est lié et que vous souhaitez atteindre ses utilisateurs, vous pouvez sponsoriser l'auteur (moi) via [GitHub sponsors](https://github.com/sponsors/tiangolo). Selon le niveau, vous pourriez obtenir des avantages supplémentaires, comme un badge dans les documents. 🎁
---
diff --git a/docs/fr/docs/history-design-future.md b/docs/fr/docs/history-design-future.md
index 300f2e0f5..6cd530c3f 100644
--- a/docs/fr/docs/history-design-future.md
+++ b/docs/fr/docs/history-design-future.md
@@ -1,6 +1,6 @@
# Histoire, conception et avenir { #history-design-and-future }
-Il y a quelque temps, un utilisateur de **FastAPI** a demandé :
+Il y a quelque temps, [un utilisateur de **FastAPI** a demandé](https://github.com/fastapi/fastapi/issues/3#issuecomment-454956920) :
> Quelle est l'histoire de ce projet ? Il semble être sorti de nulle part et est devenu génial en quelques semaines [...].
@@ -14,7 +14,7 @@ Dans ce cadre, j'ai dû étudier, tester et utiliser de nombreuses alternatives.
L'histoire de **FastAPI** est en grande partie l'histoire de ses prédécesseurs.
-Comme dit dans la section [Alternatives](alternatives.md){.internal-link target=_blank} :
+Comme dit dans la section [Alternatives](alternatives.md) :
@@ -44,7 +44,7 @@ Ensuite, j'ai passé du temps à concevoir l'« API » de développeur que je vo
J'ai testé plusieurs idées dans les éditeurs Python les plus populaires : PyCharm, VS Code, les éditeurs basés sur Jedi.
-D'après la dernière Enquête Développeurs Python, cela couvre environ 80% des utilisateurs.
+D'après la dernière [Enquête Développeurs Python](https://www.jetbrains.com/research/python-developers-survey-2018/#development-tools), cela couvre environ 80% des utilisateurs.
Cela signifie que **FastAPI** a été spécifiquement testé avec les éditeurs utilisés par 80% des développeurs Python. Et comme la plupart des autres éditeurs ont tendance à fonctionner de façon similaire, tous ses avantages devraient fonctionner pour pratiquement tous les éditeurs.
@@ -54,11 +54,11 @@ Le tout de manière à offrir la meilleure expérience de développement à tous
## Exigences { #requirements }
-Après avoir testé plusieurs alternatives, j'ai décidé que j'allais utiliser **Pydantic** pour ses avantages.
+Après avoir testé plusieurs alternatives, j'ai décidé que j'allais utiliser [**Pydantic**](https://docs.pydantic.dev/) pour ses avantages.
J'y ai ensuite contribué, pour le rendre entièrement compatible avec JSON Schema, pour supporter différentes manières de définir les déclarations de contraintes, et pour améliorer le support des éditeurs (vérifications de type, autocomplétion) sur la base des tests effectués dans plusieurs éditeurs.
-Pendant le développement, j'ai également contribué à **Starlette**, l'autre exigence clé.
+Pendant le développement, j'ai également contribué à [**Starlette**](https://www.starlette.dev/), l'autre exigence clé.
## Développement { #development }
@@ -76,4 +76,4 @@ Mais il y a encore de nombreuses améliorations et fonctionnalités à venir.
**FastAPI** a un grand avenir devant lui.
-Et [votre aide](help-fastapi.md){.internal-link target=_blank} est grandement appréciée.
+Et [votre aide](help-fastapi.md) est grandement appréciée.
diff --git a/docs/fr/docs/how-to/authentication-error-status-code.md b/docs/fr/docs/how-to/authentication-error-status-code.md
index b8e87ee71..8cbfe3d7b 100644
--- a/docs/fr/docs/how-to/authentication-error-status-code.md
+++ b/docs/fr/docs/how-to/authentication-error-status-code.md
@@ -2,7 +2,7 @@
Avant FastAPI version `0.122.0`, lorsque les utilitaires de sécurité intégrés renvoyaient une erreur au client après un échec d'authentification, ils utilisaient le code d'état HTTP `403 Forbidden`.
-À partir de FastAPI version `0.122.0`, ils utilisent le code d'état HTTP plus approprié `401 Unauthorized`, et renvoient un en-tête `WWW-Authenticate` pertinent dans la réponse, conformément aux spécifications HTTP, RFC 7235, RFC 9110.
+À partir de FastAPI version `0.122.0`, ils utilisent le code d'état HTTP plus approprié `401 Unauthorized`, et renvoient un en-tête `WWW-Authenticate` pertinent dans la réponse, conformément aux spécifications HTTP, [RFC 7235](https://datatracker.ietf.org/doc/html/rfc7235#section-3.1), [RFC 9110](https://datatracker.ietf.org/doc/html/rfc9110#name-401-unauthorized).
Mais si, pour une raison quelconque, vos clients dépendent de l'ancien comportement, vous pouvez y revenir en surchargeant la méthode `make_not_authenticated_error` dans vos classes de sécurité.
diff --git a/docs/fr/docs/how-to/conditional-openapi.md b/docs/fr/docs/how-to/conditional-openapi.md
index 61aa187cc..dd72b3929 100644
--- a/docs/fr/docs/how-to/conditional-openapi.md
+++ b/docs/fr/docs/how-to/conditional-openapi.md
@@ -2,15 +2,15 @@
Si nécessaire, vous pouvez utiliser des paramètres et des variables d'environnement pour configurer OpenAPI de manière conditionnelle selon l'environnement, et même le désactiver complètement.
-## À propos de la sécurité, des API et de la documentation { #about-security-apis-and-docs }
+## À propos de la sécurité, des API et des documents { #about-security-apis-and-docs }
-Masquer vos interfaces utilisateur de la documentation en production ne devrait pas être la manière de protéger votre API.
+Masquer vos interfaces utilisateur des documents en production ne devrait pas être la manière de protéger votre API.
Cela n'ajoute aucune sécurité supplémentaire à votre API, les *chemins d'accès* resteront disponibles là où ils se trouvent.
S'il y a une faille de sécurité dans votre code, elle existera toujours.
-Masquer la documentation rend simplement plus difficile la compréhension de la manière d'interagir avec votre API et pourrait aussi rendre son débogage en production plus difficile. Cela pourrait être considéré simplement comme une forme de Sécurité par l'obscurité.
+Masquer les documents rend simplement plus difficile la compréhension de la manière d'interagir avec votre API et pourrait aussi rendre son débogage en production plus difficile. Cela pourrait être considéré simplement comme une forme de [Sécurité par l'obscurité](https://en.wikipedia.org/wiki/Security_through_obscurity).
Si vous voulez sécuriser votre API, il y a plusieurs meilleures approches possibles, par exemple :
@@ -21,11 +21,11 @@ Si vous voulez sécuriser votre API, il y a plusieurs meilleures approches possi
* Ajoutez des contrôles d'autorisation plus granulaires avec des scopes OAuth2 lorsque nécessaire.
* ... etc.
-Néanmoins, vous pourriez avoir un cas d'utilisation très spécifique où vous devez vraiment désactiver la documentation de l'API pour un certain environnement (par exemple pour la production) ou selon des configurations provenant de variables d'environnement.
+Néanmoins, vous pourriez avoir un cas d'utilisation très spécifique où vous devez vraiment désactiver les documents de l'API pour un certain environnement (par exemple pour la production) ou selon des configurations provenant de variables d'environnement.
## Configurer OpenAPI de manière conditionnelle avec des paramètres et des variables d'environnement { #conditional-openapi-from-settings-and-env-vars }
-Vous pouvez facilement utiliser les mêmes paramètres Pydantic pour configurer votre OpenAPI généré et les interfaces utilisateur de la documentation.
+Vous pouvez facilement utiliser les mêmes paramètres Pydantic pour configurer votre OpenAPI généré et les interfaces utilisateur des documents.
Par exemple :
@@ -35,7 +35,7 @@ Ici nous déclarons le paramètre `openapi_url` avec la même valeur par défaut
Nous l'utilisons ensuite lors de la création de l'application `FastAPI`.
-Vous pouvez alors désactiver OpenAPI (y compris les interfaces utilisateur de la documentation) en définissant la variable d'environnement `OPENAPI_URL` sur la chaîne vide, comme ceci :
+Vous pouvez alors désactiver OpenAPI (y compris les interfaces utilisateur des documents) en définissant la variable d'environnement `OPENAPI_URL` sur la chaîne vide, comme ceci :
diff --git a/docs/fr/docs/how-to/configure-swagger-ui.md b/docs/fr/docs/how-to/configure-swagger-ui.md
index 73d0f00e8..34db05558 100644
--- a/docs/fr/docs/how-to/configure-swagger-ui.md
+++ b/docs/fr/docs/how-to/configure-swagger-ui.md
@@ -1,6 +1,6 @@
# Configurer Swagger UI { #configure-swagger-ui }
-Vous pouvez configurer des
paramètres supplémentaires de Swagger UI.
+Vous pouvez configurer des [paramètres supplémentaires de Swagger UI](https://swagger.io/docs/open-source-tools/swagger-ui/usage/configuration/).
Pour les configurer, passez l'argument `swagger_ui_parameters` lors de la création de l'objet d'application `FastAPI()` ou à la fonction `get_swagger_ui_html()`.
@@ -50,7 +50,7 @@ Par exemple, pour désactiver `deepLinking`, vous pourriez passer ces paramètre
## Autres paramètres de Swagger UI { #other-swagger-ui-parameters }
-Pour voir toutes les autres configurations possibles que vous pouvez utiliser, lisez la
documentation officielle des paramètres de Swagger UI.
+Pour voir toutes les autres configurations possibles que vous pouvez utiliser, lisez les [documents officiels pour les paramètres de Swagger UI](https://swagger.io/docs/open-source-tools/swagger-ui/usage/configuration/).
## Paramètres JavaScript uniquement { #javascript-only-settings }
diff --git a/docs/fr/docs/how-to/custom-docs-ui-assets.md b/docs/fr/docs/how-to/custom-docs-ui-assets.md
index d239a9696..339b806c3 100644
--- a/docs/fr/docs/how-to/custom-docs-ui-assets.md
+++ b/docs/fr/docs/how-to/custom-docs-ui-assets.md
@@ -54,7 +54,7 @@ Maintenant, pour pouvoir vérifier que tout fonctionne, créez un chemin d'accè
### Tester { #test-it }
-Vous devriez maintenant pouvoir aller à vos docs sur
http://127.0.0.1:8000/docs, puis recharger la page : elle chargera ces ressources depuis le nouveau CDN.
+Vous devriez maintenant pouvoir aller à vos docs sur [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs), puis recharger la page : elle chargera ces ressources depuis le nouveau CDN.
## Héberger en propre JavaScript et CSS pour les docs { #self-hosting-javascript-and-css-for-docs }
@@ -93,12 +93,12 @@ Vous pouvez probablement cliquer avec le bouton droit sur chaque lien et choisir
**Swagger UI** utilise les fichiers :
--
`swagger-ui-bundle.js`
--
`swagger-ui.css`
+- [`swagger-ui-bundle.js`](https://cdn.jsdelivr.net/npm/swagger-ui-dist@5/swagger-ui-bundle.js)
+- [`swagger-ui.css`](https://cdn.jsdelivr.net/npm/swagger-ui-dist@5/swagger-ui.css)
Et **ReDoc** utilise le fichier :
--
`redoc.standalone.js`
+- [`redoc.standalone.js`](https://cdn.jsdelivr.net/npm/redoc@2/bundles/redoc.standalone.js)
Après cela, votre structure de fichiers pourrait ressembler à :
@@ -122,7 +122,7 @@ Après cela, votre structure de fichiers pourrait ressembler à :
### Tester les fichiers statiques { #test-the-static-files }
-Démarrez votre application et rendez‑vous sur
http://127.0.0.1:8000/static/redoc.standalone.js.
+Démarrez votre application et rendez‑vous sur [http://127.0.0.1:8000/static/redoc.standalone.js](http://127.0.0.1:8000/static/redoc.standalone.js).
Vous devriez voir un très long fichier JavaScript pour **ReDoc**.
@@ -180,6 +180,6 @@ Maintenant, pour pouvoir vérifier que tout fonctionne, créez un chemin d'accè
### Tester l’UI avec des fichiers statiques { #test-static-files-ui }
-Vous devriez maintenant pouvoir couper votre Wi‑Fi, aller à vos docs sur
http://127.0.0.1:8000/docs et recharger la page.
+Vous devriez maintenant pouvoir couper votre Wi‑Fi, aller à vos docs sur [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs) et recharger la page.
Et même sans Internet, vous pourrez voir la documentation de votre API et interagir avec elle.
diff --git a/docs/fr/docs/how-to/custom-request-and-route.md b/docs/fr/docs/how-to/custom-request-and-route.md
index 506187d9f..4acb6464f 100644
--- a/docs/fr/docs/how-to/custom-request-and-route.md
+++ b/docs/fr/docs/how-to/custom-request-and-route.md
@@ -18,7 +18,7 @@ Si vous débutez avec **FastAPI**, vous pouvez ignorer cette section.
Voici quelques cas d'utilisation :
-* Convertir des corps de requête non JSON en JSON (par exemple
`msgpack`).
+* Convertir des corps de requête non JSON en JSON (par exemple [`msgpack`](https://msgpack.org/index.html)).
* Décompresser des corps de requête compressés en gzip.
* Journaliser automatiquement tous les corps de requête.
@@ -32,7 +32,7 @@ Et une sous-classe d'`APIRoute` pour utiliser cette classe de requête personnal
/// tip | Astuce
-Il s'agit d'un exemple simplifié pour montrer le fonctionnement ; si vous avez besoin de la prise en charge de Gzip, vous pouvez utiliser le [`GzipMiddleware`](../advanced/middleware.md#gzipmiddleware){.internal-link target=_blank} fourni.
+Il s'agit d'un exemple simplifié pour montrer le fonctionnement ; si vous avez besoin de la prise en charge de Gzip, vous pouvez utiliser le [`GzipMiddleware`](../advanced/middleware.md#gzipmiddleware) fourni.
///
@@ -66,7 +66,7 @@ Le `dict` `scope` et la fonction `receive` font tous deux partie de la spécific
Et ces deux éléments, `scope` et `receive`, sont ce dont on a besoin pour créer une nouvelle instance de `Request`.
-Pour en savoir plus sur `Request`, consultez
la documentation de Starlette sur les requêtes.
+Pour en savoir plus sur `Request`, consultez [la documentation de Starlette sur les requêtes](https://www.starlette.dev/requests/).
///
@@ -82,7 +82,7 @@ Mais grâce à nos modifications dans `GzipRequest.body`, le corps de la requêt
/// tip | Astuce
-Pour résoudre ce même problème, il est probablement beaucoup plus simple d'utiliser `body` dans un gestionnaire personnalisé pour `RequestValidationError` ([Gérer les erreurs](../tutorial/handling-errors.md#use-the-requestvalidationerror-body){.internal-link target=_blank}).
+Pour résoudre ce même problème, il est probablement beaucoup plus simple d'utiliser `body` dans un gestionnaire personnalisé pour `RequestValidationError` ([Gérer les erreurs](../tutorial/handling-errors.md#use-the-requestvalidationerror-body)).
Mais cet exemple reste valable et montre comment interagir avec les composants internes.
diff --git a/docs/fr/docs/how-to/extending-openapi.md b/docs/fr/docs/how-to/extending-openapi.md
index 1c540ea6c..bdf4eeba9 100644
--- a/docs/fr/docs/how-to/extending-openapi.md
+++ b/docs/fr/docs/how-to/extending-openapi.md
@@ -37,7 +37,7 @@ Le paramètre `summary` est disponible à partir d'OpenAPI 3.1.0, pris en charge
En vous appuyant sur les informations ci-dessus, vous pouvez utiliser la même fonction utilitaire pour générer le schéma OpenAPI et remplacer chaque partie dont vous avez besoin.
-Par exemple, ajoutons
l’extension OpenAPI de ReDoc pour inclure un logo personnalisé.
+Par exemple, ajoutons [l’extension OpenAPI de ReDoc pour inclure un logo personnalisé](https://github.com/Rebilly/ReDoc/blob/master/docs/redoc-vendor-extensions.md#x-logo).
### **FastAPI** normal { #normal-fastapi }
@@ -75,6 +75,6 @@ Vous pouvez maintenant remplacer la méthode `.openapi()` par votre nouvelle fon
### Vérifier { #check-it }
-Une fois que vous allez sur
http://127.0.0.1:8000/redoc, vous verrez que vous utilisez votre logo personnalisé (dans cet exemple, le logo de **FastAPI**) :
+Une fois que vous allez sur [http://127.0.0.1:8000/redoc](http://127.0.0.1:8000/redoc), vous verrez que vous utilisez votre logo personnalisé (dans cet exemple, le logo de **FastAPI**) :

diff --git a/docs/fr/docs/how-to/general.md b/docs/fr/docs/how-to/general.md
index 09d4498ac..93ebf8953 100644
--- a/docs/fr/docs/how-to/general.md
+++ b/docs/fr/docs/how-to/general.md
@@ -1,39 +1,43 @@
# Général - Guides pratiques - Recettes { #general-how-to-recipes }
-Voici plusieurs renvois vers d'autres endroits de la documentation, pour des questions générales ou fréquentes.
+Voici plusieurs renvois vers d'autres endroits dans les documents, pour des questions générales ou fréquentes.
## Filtrer des données - Sécurité { #filter-data-security }
-Pour vous assurer que vous ne renvoyez pas plus de données que nécessaire, lisez la documentation [Tutoriel - Modèle de réponse - Type de retour](../tutorial/response-model.md){.internal-link target=_blank}.
+Pour vous assurer que vous ne renvoyez pas plus de données que nécessaire, lisez les documents [Tutoriel - Modèle de réponse - Type de retour](../tutorial/response-model.md).
+
+## Optimiser la performance des réponses - Modèle de réponse - Type de retour { #optimize-response-performance-response-model-return-type }
+
+Pour optimiser la performance lors du renvoi de données JSON, utilisez un type de retour ou un modèle de réponse ; de cette façon, Pydantic prendra en charge la sérialisation en JSON côté Rust, sans passer par Python. Pour en savoir plus, lisez les documents [Tutoriel - Modèle de réponse - Type de retour](../tutorial/response-model.md).
## Étiquettes de documentation - OpenAPI { #documentation-tags-openapi }
-Pour ajouter des étiquettes à vos *chemins d'accès* et les regrouper dans l'interface utilisateur de la documentation, lisez la documentation [Tutoriel - Configurations de chemin d'accès - Tags](../tutorial/path-operation-configuration.md#tags){.internal-link target=_blank}.
+Pour ajouter des étiquettes à vos *chemins d'accès* et les regrouper dans l'interface utilisateur de la documentation, lisez les documents [Tutoriel - Configurations de chemin d'accès - Tags](../tutorial/path-operation-configuration.md#tags).
## Résumé et description de la documentation - OpenAPI { #documentation-summary-and-description-openapi }
-Pour ajouter un résumé et une description à vos *chemins d'accès* et les afficher dans l'interface utilisateur de la documentation, lisez la documentation [Tutoriel - Configurations de chemin d'accès - Résumé et description](../tutorial/path-operation-configuration.md#summary-and-description){.internal-link target=_blank}.
+Pour ajouter un résumé et une description à vos *chemins d'accès* et les afficher dans l'interface utilisateur de la documentation, lisez les documents [Tutoriel - Configurations de chemin d'accès - Résumé et description](../tutorial/path-operation-configuration.md#summary-and-description).
## Description de la réponse dans la documentation - OpenAPI { #documentation-response-description-openapi }
-Pour définir la description de la réponse, affichée dans l'interface utilisateur de la documentation, lisez la documentation [Tutoriel - Configurations de chemin d'accès - Description de la réponse](../tutorial/path-operation-configuration.md#response-description){.internal-link target=_blank}.
+Pour définir la description de la réponse, affichée dans l'interface utilisateur de la documentation, lisez les documents [Tutoriel - Configurations de chemin d'accès - Description de la réponse](../tutorial/path-operation-configuration.md#response-description).
## Déprécier un *chemin d'accès* dans la documentation - OpenAPI { #documentation-deprecate-a-path-operation-openapi }
-Pour déprécier un *chemin d'accès* et l'indiquer dans l'interface utilisateur de la documentation, lisez la documentation [Tutoriel - Configurations de chemin d'accès - Déprécier un chemin d'accès](../tutorial/path-operation-configuration.md#deprecate-a-path-operation){.internal-link target=_blank}.
+Pour déprécier un *chemin d'accès* et l'indiquer dans l'interface utilisateur de la documentation, lisez les documents [Tutoriel - Configurations de chemin d'accès - Dépréciation](../tutorial/path-operation-configuration.md#deprecate-a-path-operation).
## Convertir n'importe quelles données au format compatible JSON { #convert-any-data-to-json-compatible }
-Pour convertir des données vers un format compatible JSON, lisez la documentation [Tutoriel - Encodeur compatible JSON](../tutorial/encoder.md){.internal-link target=_blank}.
+Pour convertir des données vers un format compatible JSON, lisez les documents [Tutoriel - Encodeur compatible JSON](../tutorial/encoder.md).
## Métadonnées OpenAPI - Documentation { #openapi-metadata-docs }
-Pour ajouter des métadonnées à votre schéma OpenAPI, y compris une licence, une version, un contact, etc., lisez la documentation [Tutoriel - Métadonnées et URLs de la documentation](../tutorial/metadata.md){.internal-link target=_blank}.
+Pour ajouter des métadonnées à votre schéma OpenAPI, y compris une licence, une version, un contact, etc., lisez les documents [Tutoriel - Métadonnées et URLs de la documentation](../tutorial/metadata.md).
## URL OpenAPI personnalisée { #openapi-custom-url }
-Pour personnaliser l'URL OpenAPI (ou la supprimer), lisez la documentation [Tutoriel - Métadonnées et URLs de la documentation](../tutorial/metadata.md#openapi-url){.internal-link target=_blank}.
+Pour personnaliser l'URL OpenAPI (ou la supprimer), lisez les documents [Tutoriel - Métadonnées et URLs de la documentation](../tutorial/metadata.md#openapi-url).
## URL de la documentation OpenAPI { #openapi-docs-urls }
-Pour mettre à jour les URL utilisées pour les interfaces utilisateur de documentation générées automatiquement, lisez la documentation [Tutoriel - Métadonnées et URLs de la documentation](../tutorial/metadata.md#docs-urls){.internal-link target=_blank}.
+Pour mettre à jour les URL utilisées pour les interfaces utilisateur de documentation générées automatiquement, lisez les documents [Tutoriel - Métadonnées et URLs de la documentation](../tutorial/metadata.md#docs-urls).
diff --git a/docs/fr/docs/how-to/graphql.md b/docs/fr/docs/how-to/graphql.md
index 59cd1590f..912608a98 100644
--- a/docs/fr/docs/how-to/graphql.md
+++ b/docs/fr/docs/how-to/graphql.md
@@ -18,18 +18,18 @@ Assurez-vous d'évaluer si les **bénéfices** pour votre cas d'utilisation comp
Voici quelques bibliothèques **GraphQL** qui prennent en charge **ASGI**. Vous pouvez les utiliser avec **FastAPI** :
-*
Strawberry 🍓
- * Avec
la documentation pour FastAPI
-*
Ariadne
- * Avec
la documentation pour FastAPI
-*
Tartiflette
- * Avec
Tartiflette ASGI pour fournir l'intégration ASGI
-*
Graphene
- * Avec
starlette-graphene3
+* [Strawberry](https://strawberry.rocks/) 🍓
+ * Avec [la documentation pour FastAPI](https://strawberry.rocks/docs/integrations/fastapi)
+* [Ariadne](https://ariadnegraphql.org/)
+ * Avec [la documentation pour FastAPI](https://ariadnegraphql.org/docs/fastapi-integration)
+* [Tartiflette](https://tartiflette.io/)
+ * Avec [Tartiflette ASGI](https://tartiflette.github.io/tartiflette-asgi/) pour fournir l'intégration ASGI
+* [Graphene](https://graphene-python.org/)
+ * Avec [starlette-graphene3](https://github.com/ciscorn/starlette-graphene3)
## GraphQL avec Strawberry { #graphql-with-strawberry }
-Si vous avez besoin ou souhaitez travailler avec **GraphQL**,
**Strawberry** est la bibliothèque **recommandée** car sa conception est la plus proche de celle de **FastAPI**, tout est basé sur des **annotations de type**.
+Si vous avez besoin ou souhaitez travailler avec **GraphQL**, [**Strawberry**](https://strawberry.rocks/) est la bibliothèque **recommandée** car sa conception est la plus proche de celle de **FastAPI**, tout est basé sur des **annotations de type**.
Selon votre cas d'utilisation, vous pourriez préférer une autre bibliothèque, mais si vous me le demandiez, je vous suggérerais probablement d'essayer **Strawberry**.
@@ -37,24 +37,24 @@ Voici un petit aperçu de la manière dont vous pouvez intégrer Strawberry avec
{* ../../docs_src/graphql_/tutorial001_py310.py hl[3,22,25] *}
-Vous pouvez en apprendre davantage sur Strawberry dans la
documentation de Strawberry.
+Vous pouvez en apprendre davantage sur Strawberry dans la [documentation de Strawberry](https://strawberry.rocks/).
-Et également la documentation sur
Strawberry avec FastAPI.
+Et également la documentation sur [Strawberry avec FastAPI](https://strawberry.rocks/docs/integrations/fastapi).
## Ancien `GraphQLApp` de Starlette { #older-graphqlapp-from-starlette }
-Les versions précédentes de Starlette incluaient une classe `GraphQLApp` pour s'intégrer à
Graphene.
+Les versions précédentes de Starlette incluaient une classe `GraphQLApp` pour s'intégrer à [Graphene](https://graphene-python.org/).
-Elle a été dépréciée dans Starlette, mais si vous avez du code qui l'utilisait, vous pouvez facilement **migrer** vers
starlette-graphene3, qui couvre le même cas d'utilisation et propose une **interface presque identique**.
+Elle a été dépréciée dans Starlette, mais si vous avez du code qui l'utilisait, vous pouvez facilement **migrer** vers [starlette-graphene3](https://github.com/ciscorn/starlette-graphene3), qui couvre le même cas d'utilisation et propose une **interface presque identique**.
/// tip | Astuce
-Si vous avez besoin de GraphQL, je vous recommande tout de même de regarder
Strawberry, car il est basé sur des annotations de type plutôt que sur des classes et types personnalisés.
+Si vous avez besoin de GraphQL, je vous recommande tout de même de regarder [Strawberry](https://strawberry.rocks/), car il est basé sur des annotations de type plutôt que sur des classes et types personnalisés.
///
## En savoir plus { #learn-more }
-Vous pouvez en apprendre davantage sur **GraphQL** dans la
documentation officielle de GraphQL.
+Vous pouvez en apprendre davantage sur **GraphQL** dans la [documentation officielle de GraphQL](https://graphql.org/).
Vous pouvez également en lire davantage sur chacune des bibliothèques décrites ci-dessus via leurs liens.
diff --git a/docs/fr/docs/how-to/index.md b/docs/fr/docs/how-to/index.md
index 03736fa43..62e7d0457 100644
--- a/docs/fr/docs/how-to/index.md
+++ b/docs/fr/docs/how-to/index.md
@@ -8,6 +8,6 @@ Si quelque chose vous paraît intéressant et utile pour votre projet, allez-y e
/// tip | Astuce
-Si vous voulez **apprendre FastAPI** de façon structurée (recommandé), allez lire le [Tutoriel - Guide utilisateur](../tutorial/index.md){.internal-link target=_blank} chapitre par chapitre à la place.
+Si vous voulez **apprendre FastAPI** de façon structurée (recommandé), allez lire le [Tutoriel - Guide utilisateur](../tutorial/index.md) chapitre par chapitre à la place.
///
diff --git a/docs/fr/docs/how-to/migrate-from-pydantic-v1-to-pydantic-v2.md b/docs/fr/docs/how-to/migrate-from-pydantic-v1-to-pydantic-v2.md
index 681cf697b..99d68ba81 100644
--- a/docs/fr/docs/how-to/migrate-from-pydantic-v1-to-pydantic-v2.md
+++ b/docs/fr/docs/how-to/migrate-from-pydantic-v1-to-pydantic-v2.md
@@ -10,19 +10,19 @@ FastAPI 0.126.0 a supprimé la prise en charge de Pydantic v1, tout en continuan
/// warning | Alertes
-L'équipe Pydantic a arrêté la prise en charge de Pydantic v1 pour les dernières versions de Python, à partir de Python 3.14.
+L'équipe Pydantic a arrêté la prise en charge de Pydantic v1 pour les dernières versions de Python, à partir de **Python 3.14**.
-Cela inclut `pydantic.v1`, qui n'est plus pris en charge à partir de Python 3.14.
+Cela inclut `pydantic.v1`, qui n'est plus pris en charge en Python 3.14 et versions ultérieures.
Si vous souhaitez utiliser les dernières fonctionnalités de Python, vous devez vous assurer que vous utilisez Pydantic v2.
///
-Si vous avez une ancienne application FastAPI avec Pydantic v1, je vais vous montrer comment la migrer vers Pydantic v2, et les fonctionnalités de FastAPI 0.119.0 pour vous aider à une migration progressive.
+Si vous avez une ancienne application FastAPI avec Pydantic v1, je vais vous montrer comment la migrer vers Pydantic v2, et les **fonctionnalités de FastAPI 0.119.0** pour vous aider à une migration progressive.
## Guide officiel { #official-guide }
-Pydantic propose un
Guide de migration officiel de la v1 à la v2.
+Pydantic propose un [Guide de migration](https://docs.pydantic.dev/latest/migration/) officiel de la v1 à la v2.
Il inclut aussi ce qui a changé, comment les validations sont désormais plus correctes et strictes, les pièges possibles, etc.
@@ -30,7 +30,7 @@ Vous pouvez le lire pour mieux comprendre ce qui a changé.
## Tests { #tests }
-Vous devez vous assurer d'avoir des [tests](../tutorial/testing.md){.internal-link target=_blank} pour votre application et de les exécuter en intégration continue (CI).
+Vous devez vous assurer d'avoir des [tests](../tutorial/testing.md) pour votre application et de les exécuter en intégration continue (CI).
De cette façon, vous pouvez effectuer la mise à niveau et vous assurer que tout fonctionne toujours comme prévu.
@@ -38,7 +38,7 @@ De cette façon, vous pouvez effectuer la mise à niveau et vous assurer que tou
Dans de nombreux cas, lorsque vous utilisez des modèles Pydantic classiques sans personnalisations, vous pourrez automatiser la majeure partie du processus de migration de Pydantic v1 à Pydantic v2.
-Vous pouvez utiliser
`bump-pydantic` de la même équipe Pydantic.
+Vous pouvez utiliser [`bump-pydantic`](https://github.com/pydantic/bump-pydantic) de la même équipe Pydantic.
Cet outil vous aidera à modifier automatiquement la majeure partie du code à adapter.
@@ -62,7 +62,7 @@ Vous pouvez donc mettre à niveau Pydantic vers la dernière version 2 et modifi
/// warning | Alertes
-Gardez à l'esprit que, puisque l'équipe Pydantic ne prend plus en charge Pydantic v1 dans les versions récentes de Python à partir de Python 3.14, l'utilisation de `pydantic.v1` n'est pas non plus prise en charge à partir de Python 3.14.
+Gardez à l'esprit que, puisque l'équipe Pydantic ne prend plus en charge Pydantic v1 dans les versions récentes de Python à partir de Python 3.14, l'utilisation de `pydantic.v1` n'est pas non plus prise en charge en Python 3.14 et versions ultérieures.
///
@@ -108,7 +108,7 @@ graph TB
style V2Field fill:#f9fff3
```
-Dans certains cas, il est même possible d'avoir des modèles Pydantic v1 et v2 dans le même chemin d'accès de votre application FastAPI :
+Dans certains cas, il est même possible d'avoir des modèles Pydantic v1 et v2 dans le même **chemin d'accès** de votre application FastAPI :
{* ../../docs_src/pydantic_v1_in_v2/tutorial003_an_py310.py hl[2:3,6,12,21:22] *}
diff --git a/docs/fr/docs/how-to/testing-database.md b/docs/fr/docs/how-to/testing-database.md
index 3179bc4c6..be96bd2a2 100644
--- a/docs/fr/docs/how-to/testing-database.md
+++ b/docs/fr/docs/how-to/testing-database.md
@@ -1,7 +1,7 @@
# Tester une base de données { #testing-a-database }
-Vous pouvez étudier les bases de données, SQL et SQLModel dans
les documents SQLModel. 🤓
+Vous pouvez étudier les bases de données, SQL et SQLModel dans les [documents SQLModel](https://sqlmodel.tiangolo.com/). 🤓
-Il existe un mini
tutoriel sur l'utilisation de SQLModel avec FastAPI. ✨
+Il existe un mini [tutoriel sur l'utilisation de SQLModel avec FastAPI](https://sqlmodel.tiangolo.com/tutorial/fastapi/). ✨
-Ce tutoriel comprend une section sur
les tests des bases de données SQL. 😎
+Ce tutoriel comprend une section sur les [tests des bases de données SQL](https://sqlmodel.tiangolo.com/tutorial/fastapi/tests/). 😎
diff --git a/docs/fr/docs/index.md b/docs/fr/docs/index.md
index bf4446b94..3b297ffd3 100644
--- a/docs/fr/docs/index.md
+++ b/docs/fr/docs/index.md
@@ -11,25 +11,25 @@
Framework FastAPI, haute performance, facile à apprendre, rapide à coder, prêt pour la production
-
+
-
+
-
+
-
+
---
-**Documentation** :
https://fastapi.tiangolo.com/fr
+**Documentation** : [https://fastapi.tiangolo.com/fr](https://fastapi.tiangolo.com/fr)
-**Code Source** :
https://github.com/fastapi/fastapi
+**Code Source** : [https://github.com/fastapi/fastapi](https://github.com/fastapi/fastapi)
---
@@ -44,7 +44,7 @@ Les principales fonctionnalités sont :
* **Facile** : conçu pour être facile à utiliser et à apprendre. Moins de temps passé à lire les documents.
* **Concis** : diminue la duplication de code. Plusieurs fonctionnalités à partir de chaque déclaration de paramètre. Moins de bugs.
* **Robuste** : obtenez un code prêt pour la production. Avec une documentation interactive automatique.
-* **Basé sur des normes** : basé sur (et entièrement compatible avec) les standards ouverts pour les APIs :
OpenAPI (précédemment connu sous le nom de Swagger) et
JSON Schema.
+* **Basé sur des normes** : basé sur (et entièrement compatible avec) les standards ouverts pour les APIs : [OpenAPI](https://github.com/OAI/OpenAPI-Specification) (précédemment connu sous le nom de Swagger) et [JSON Schema](https://json-schema.org/).
* estimation basée sur des tests d'une équipe de développement interne, construisant des applications de production.
@@ -55,51 +55,51 @@ Les principales fonctionnalités sont :
### Sponsor clé de voûte { #keystone-sponsor }
{% for sponsor in sponsors.keystone -%}
-

+

{% endfor -%}
### Sponsors Or et Argent { #gold-and-silver-sponsors }
{% for sponsor in sponsors.gold -%}
-

+

{% endfor -%}
{%- for sponsor in sponsors.silver -%}
-

+

{% endfor %}
-
Autres sponsors
+[Autres sponsors](https://fastapi.tiangolo.com/fr/fastapi-people/#sponsors)
## Opinions { #opinions }
« _[...] J'utilise beaucoup **FastAPI** ces derniers temps. [...] Je prévois de l'utiliser dans mon équipe pour tous les **services de ML chez Microsoft**. Certains d'entre eux sont intégrés au cœur de **Windows** et à certains produits **Office**._ »
-
Kabir Khan -
Microsoft (ref)
+
Kabir Khan -
Microsoft (ref)
---
« _Nous avons adopté la bibliothèque **FastAPI** pour créer un serveur **REST** qui peut être interrogé pour obtenir des **prédictions**. [pour Ludwig]_ »
-
Piero Molino, Yaroslav Dudin, et Sai Sumanth Miryala -
Uber (ref)
+
Piero Molino, Yaroslav Dudin, et Sai Sumanth Miryala -
Uber (ref)
---
« _**Netflix** est heureux d'annoncer la publication en open source de notre framework d'orchestration de **gestion de crise** : **Dispatch** ! [construit avec **FastAPI**]_ »
-
Kevin Glisson, Marc Vilanova, Forest Monsen -
Netflix (ref)
+
Kevin Glisson, Marc Vilanova, Forest Monsen -
Netflix (ref)
---
« _Je suis plus qu'enthousiaste à propos de **FastAPI**. C'est tellement fun !_ »
-
+
Brian Okken -
Animateur du podcast [Python Bytes](https://pythonbytes.fm/episodes/show/123/time-to-right-the-py-wrongs?time_in_sec=855) (ref)
---
« _Honnêtement, ce que vous avez construit a l'air super solide et soigné. À bien des égards, c'est ce que je voulais que **Hug** soit — c'est vraiment inspirant de voir quelqu'un construire ça._ »
-
+
Timothy Crosley -
Créateur de [Hug](https://github.com/hugapi/hug) (ref)
---
@@ -107,27 +107,27 @@ Les principales fonctionnalités sont :
« _Nous sommes passés à **FastAPI** pour nos **APIs** [...] Je pense que vous l'aimerez [...]_ »
-
+
Ines Montani - Matthew Honnibal -
Fondateurs de [Explosion AI](https://explosion.ai) - Créateurs de [spaCy](https://spacy.io) (ref) -
(ref)
---
« _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 ingénieur TAC virtuel._ »
-
Deon Pillsbury -
Cisco (ref)
+
Deon Pillsbury -
Cisco (ref)
---
## Mini documentaire FastAPI { #fastapi-mini-documentary }
-Un
mini documentaire FastAPI est sorti fin 2025, vous pouvez le regarder en ligne :
+Un [mini documentaire FastAPI](https://www.youtube.com/watch?v=mpR8ngthqiE) est sorti fin 2025, vous pouvez le regarder en ligne :
-

+

## **Typer**, le FastAPI des CLIs { #typer-the-fastapi-of-clis }
-

+

-Si vous construisez une application
CLI à utiliser dans un terminal au lieu d'une API web, regardez
**Typer**.
+Si vous construisez une application
CLI à utiliser dans un terminal au lieu d'une API web, regardez [**Typer**](https://typer.tiangolo.com/).
**Typer** est le petit frère de FastAPI. Et il est destiné à être le **FastAPI des CLIs**. ⌨️ 🚀
@@ -135,12 +135,12 @@ Si vous construisez une application
Starlette pour les parties web.
-* Pydantic pour les parties données.
+* [Starlette](https://www.starlette.dev/) pour les parties web.
+* [Pydantic](https://docs.pydantic.dev/) pour les parties données.
## Installation { #installation }
-Créez et activez un environnement virtuel puis installez FastAPI :
+Créez et activez un [environnement virtuel](https://fastapi.tiangolo.com/fr/virtual-environments/) puis installez FastAPI :
@@ -199,7 +199,7 @@ async def read_item(item_id: int, q: str | None = None):
**Remarque** :
-Si vous ne savez pas, consultez la section « Vous êtes pressés ? » à propos de
`async` et `await` dans la documentation.
+Si vous ne savez pas, consultez la section « Vous êtes pressés ? » à propos de [`async` et `await` dans la documentation](https://fastapi.tiangolo.com/fr/async/#in-a-hurry).
@@ -210,7 +210,7 @@ Lancez le serveur avec :
```console
-$ fastapi dev main.py
+$ fastapi dev
╭────────── FastAPI CLI - Development mode ───────────╮
│ │
@@ -235,19 +235,19 @@ INFO: Application startup complete.
-À propos de la commande fastapi dev main.py...
+À propos de la commande fastapi dev...
-La commande `fastapi dev` lit votre fichier `main.py`, détecte l'application **FastAPI** qu'il contient et lance un serveur avec Uvicorn.
+La commande `fastapi dev` lit automatiquement votre fichier `main.py`, détecte l'application **FastAPI** qu'il contient et lance un serveur avec [Uvicorn](https://www.uvicorn.dev).
Par défaut, `fastapi dev` démarre avec le rechargement automatique activé pour le développement local.
-Vous pouvez en savoir plus dans la documentation de la CLI FastAPI.
+Vous pouvez en savoir plus dans la [documentation de la CLI FastAPI](https://fastapi.tiangolo.com/fr/fastapi-cli/).
### Vérifier { #check-it }
-Ouvrez votre navigateur à l'adresse
http://127.0.0.1:8000/items/5?q=somequery.
+Ouvrez votre navigateur à l'adresse [http://127.0.0.1:8000/items/5?q=somequery](http://127.0.0.1:8000/items/5?q=somequery).
Vous verrez la réponse JSON :
@@ -264,17 +264,17 @@ Vous avez déjà créé une API qui :
### Documentation API interactive { #interactive-api-docs }
-Maintenant, rendez-vous sur
http://127.0.0.1:8000/docs.
+Maintenant, rendez-vous sur [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs).
-Vous verrez la documentation interactive automatique de l'API (fournie par
Swagger UI) :
+Vous verrez la documentation interactive automatique de l'API (fournie par [Swagger UI](https://github.com/swagger-api/swagger-ui)) :

### Documentation API alternative { #alternative-api-docs }
-Et maintenant, rendez-vous sur
http://127.0.0.1:8000/redoc.
+Et maintenant, rendez-vous sur [http://127.0.0.1:8000/redoc](http://127.0.0.1:8000/redoc).
-Vous verrez la documentation alternative automatique (fournie par
ReDoc) :
+Vous verrez la documentation alternative automatique (fournie par [ReDoc](https://github.com/Rebilly/ReDoc)) :

@@ -316,7 +316,7 @@ Le serveur `fastapi dev` devrait se recharger automatiquement.
### Mettre à niveau la documentation API interactive { #interactive-api-docs-upgrade }
-Maintenant, rendez-vous sur
http://127.0.0.1:8000/docs.
+Maintenant, rendez-vous sur [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs).
* La documentation interactive de l'API sera automatiquement mise à jour, y compris le nouveau corps :
@@ -332,7 +332,7 @@ Maintenant, rendez-vous sur
http://127.0.0.1:8000/redoc.
+Et maintenant, rendez-vous sur [http://127.0.0.1:8000/redoc](http://127.0.0.1:8000/redoc).
* La documentation alternative reflètera également le nouveau paramètre de requête et le nouveau corps :
@@ -442,7 +442,7 @@ Pour un exemple plus complet comprenant plus de fonctionnalités, voir le
d'injection de dépendances** très puissant et facile à utiliser.
* Sécurité et authentification, y compris la prise en charge de **OAuth2** avec des **JWT tokens** et l'authentification **HTTP Basic**.
* Des techniques plus avancées (mais tout aussi faciles) pour déclarer des **modèles JSON profondément imbriqués** (grâce à Pydantic).
-* Intégration **GraphQL** avec Strawberry et d'autres bibliothèques.
+* Intégration **GraphQL** avec [Strawberry](https://strawberry.rocks) et d'autres bibliothèques.
* De nombreuses fonctionnalités supplémentaires (grâce à Starlette) comme :
* **WebSockets**
* des tests extrêmement faciles basés sur HTTPX et `pytest`
@@ -452,24 +452,10 @@ Pour un exemple plus complet comprenant plus de fonctionnalités, voir le
FastAPI Cloud, allez vous inscrire sur la liste d'attente si ce n'est pas déjà fait. 🚀
+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.
-Avant de déployer, assurez-vous d'être connecté :
-
-
-
-```console
-$ fastapi login
-
-You are logged in to FastAPI Cloud 🚀
-```
-
-
-
-Puis déployez votre application :
-
```console
@@ -488,7 +474,7 @@ C'est tout ! Vous pouvez maintenant accéder à votre application à cette URL.
#### À propos de FastAPI Cloud { #about-fastapi-cloud }
-**
FastAPI Cloud** est construit par le même auteur et la même équipe derrière **FastAPI**.
+**[FastAPI Cloud](https://fastapicloud.com)** est construit par le même auteur et la même équipe derrière **FastAPI**.
Il simplifie le processus de **construction**, de **déploiement** et **d'accès** à une API avec un effort minimal.
@@ -504,9 +490,9 @@ Suivez les guides de votre fournisseur cloud pour y déployer des applications F
## Performance { #performance }
-Les benchmarks TechEmpower indépendants montrent que les applications **FastAPI** s'exécutant sous Uvicorn sont
parmi les frameworks Python les plus rapides, juste derrière Starlette et Uvicorn eux-mêmes (utilisés en interne par FastAPI). (*)
+Les benchmarks TechEmpower indépendants montrent que les applications **FastAPI** s'exécutant sous Uvicorn sont [parmi les frameworks Python les plus rapides](https://www.techempower.com/benchmarks/#section=test&runid=7464e520-0dc2-473d-bd34-dbdfd7e85911&hw=ph&test=query&l=zijzen-7), juste derrière Starlette et Uvicorn eux-mêmes (utilisés en interne par FastAPI). (*)
-Pour en savoir plus, consultez la section
Benchmarks.
+Pour en savoir plus, consultez la section [Benchmarks](https://fastapi.tiangolo.com/fr/benchmarks/).
## Dépendances { #dependencies }
@@ -518,19 +504,19 @@ Lorsque vous installez FastAPI avec `pip install "fastapi[standard]"`, il inclut
Utilisées par Pydantic :
-*
email-validator - pour la validation des adresses e-mail.
+* [`email-validator`](https://github.com/JoshData/python-email-validator) - pour la validation des adresses e-mail.
Utilisées par Starlette :
-*
httpx - Obligatoire si vous souhaitez utiliser le `TestClient`.
-*
jinja2 - Obligatoire si vous souhaitez utiliser la configuration de template par défaut.
-*
python-multipart - Obligatoire si vous souhaitez prendre en charge l’
« parsing » de formulaires avec `request.form()`.
+* [`httpx`](https://www.python-httpx.org) - Obligatoire si vous souhaitez utiliser le `TestClient`.
+* [`jinja2`](https://jinja.palletsprojects.com) - Obligatoire si vous souhaitez utiliser la configuration de template par défaut.
+* [`python-multipart`](https://github.com/Kludex/python-multipart) - Obligatoire si vous souhaitez prendre en charge l’
« parsing » de formulaires avec `request.form()`.
Utilisées par FastAPI :
-*
uvicorn - pour le serveur qui charge et sert votre application. Cela inclut `uvicorn[standard]`, qui comprend certaines dépendances (par ex. `uvloop`) nécessaires pour une haute performance.
+* [`uvicorn`](https://www.uvicorn.dev) - pour le serveur qui charge et sert votre application. Cela inclut `uvicorn[standard]`, qui comprend certaines dépendances (par ex. `uvloop`) nécessaires pour une haute performance.
* `fastapi-cli[standard]` - pour fournir la commande `fastapi`.
- * Cela inclut `fastapi-cloud-cli`, qui vous permet de déployer votre application FastAPI sur
FastAPI Cloud.
+ * Cela inclut `fastapi-cloud-cli`, qui vous permet de déployer votre application FastAPI sur [FastAPI Cloud](https://fastapicloud.com).
### Sans les dépendances `standard` { #without-standard-dependencies }
@@ -546,13 +532,13 @@ Il existe des dépendances supplémentaires que vous pourriez vouloir installer.
Dépendances optionnelles supplémentaires pour Pydantic :
-*
pydantic-settings - pour la gestion des paramètres.
-*
pydantic-extra-types - pour des types supplémentaires à utiliser avec Pydantic.
+* [`pydantic-settings`](https://docs.pydantic.dev/latest/usage/pydantic_settings/) - pour la gestion des paramètres.
+* [`pydantic-extra-types`](https://docs.pydantic.dev/latest/usage/types/extra_types/extra_types/) - pour des types supplémentaires à utiliser avec Pydantic.
Dépendances optionnelles supplémentaires pour FastAPI :
-*
orjson - Obligatoire si vous souhaitez utiliser `ORJSONResponse`.
-*
ujson - Obligatoire si vous souhaitez utiliser `UJSONResponse`.
+* [`orjson`](https://github.com/ijl/orjson) - Obligatoire si vous souhaitez utiliser `ORJSONResponse`.
+* [`ujson`](https://github.com/esnme/ultrajson) - Obligatoire si vous souhaitez utiliser `UJSONResponse`.
## Licence { #license }
diff --git a/docs/fr/docs/project-generation.md b/docs/fr/docs/project-generation.md
index f062ffecf..e0636bfe5 100644
--- a/docs/fr/docs/project-generation.md
+++ b/docs/fr/docs/project-generation.md
@@ -4,7 +4,7 @@ Les modèles, bien qu'ils soient généralement livrés avec une configuration s
Vous pouvez utiliser ce modèle pour démarrer, car il inclut une grande partie de la configuration initiale, la sécurité, la base de données et quelques endpoints d'API déjà prêts pour vous.
-Dépôt GitHub :
Modèle Full Stack FastAPI
+Dépôt GitHub : [Modèle Full Stack FastAPI](https://github.com/tiangolo/full-stack-fastapi-template)
## Modèle Full Stack FastAPI - Pile technologique et fonctionnalités { #full-stack-fastapi-template-technology-stack-and-features }
diff --git a/docs/fr/docs/python-types.md b/docs/fr/docs/python-types.md
index 770f1514a..97230b7b9 100644
--- a/docs/fr/docs/python-types.md
+++ b/docs/fr/docs/python-types.md
@@ -172,7 +172,7 @@ Comme la liste est un type qui contient des types internes, mettez-les entre cro
{* ../../docs_src/python_types/tutorial006_py310.py hl[1] *}
-/// info | Info
+/// info
Ces types internes entre crochets sont appelés « paramètres de type ».
@@ -269,7 +269,7 @@ Cela ne signifie pas « `one_person` est la **classe** appelée `Person` ».
## Modèles Pydantic { #pydantic-models }
-
Pydantic est une bibliothèque Python pour effectuer de la validation de données.
+[Pydantic](https://docs.pydantic.dev/) est une bibliothèque Python pour effectuer de la validation de données.
Vous déclarez la « forme » de la donnée sous forme de classes avec des attributs.
@@ -283,15 +283,15 @@ Un exemple tiré de la documentation officielle de Pydantic :
{* ../../docs_src/python_types/tutorial011_py310.py *}
-/// info | Info
+/// info
-Pour en savoir plus à propos de
Pydantic, consultez sa documentation.
+Pour en savoir plus à propos de [Pydantic, consultez sa documentation](https://docs.pydantic.dev/).
///
**FastAPI** est entièrement basé sur Pydantic.
-Vous verrez beaucoup plus de tout cela en pratique dans le [Tutoriel - Guide utilisateur](tutorial/index.md){.internal-link target=_blank}.
+Vous verrez beaucoup plus de tout cela en pratique dans le [Tutoriel - Guide utilisateur](tutorial/index.md).
## Annotations de type avec métadonnées { #type-hints-with-metadata-annotations }
@@ -337,12 +337,12 @@ Avec **FastAPI**, vous déclarez des paramètres avec des annotations de type et
* **Documenter** l'API avec OpenAPI :
* ce qui est ensuite utilisé par les interfaces utilisateur de documentation interactive automatiques.
-Tout cela peut sembler abstrait. Ne vous inquiétez pas. Vous verrez tout cela en action dans le [Tutoriel - Guide utilisateur](tutorial/index.md){.internal-link target=_blank}.
+Tout cela peut sembler abstrait. Ne vous inquiétez pas. Vous verrez tout cela en action dans le [Tutoriel - Guide utilisateur](tutorial/index.md).
L'important est qu'en utilisant les types standards de Python, en un seul endroit (au lieu d'ajouter plus de classes, de décorateurs, etc.), **FastAPI** fera une grande partie du travail pour vous.
-/// info | Info
+/// info
-Si vous avez déjà parcouru tout le tutoriel et êtes revenu pour en voir plus sur les types, une bonne ressource est
l'« aide-mémoire » de `mypy`.
+Si vous avez déjà parcouru tout le tutoriel et êtes revenu pour en voir plus sur les types, une bonne ressource est [l'« aide-mémoire » de `mypy`](https://mypy.readthedocs.io/en/latest/cheat_sheet_py3.html).
///
diff --git a/docs/fr/docs/tutorial/background-tasks.md b/docs/fr/docs/tutorial/background-tasks.md
index a8444ba27..c8f66e525 100644
--- a/docs/fr/docs/tutorial/background-tasks.md
+++ b/docs/fr/docs/tutorial/background-tasks.md
@@ -61,7 +61,7 @@ Et ensuite une autre tâche d'arrière-plan (générée dans la *fonction de che
## Détails techniques { #technical-details }
-La classe `BackgroundTasks` provient directement de
`starlette.background`.
+La classe `BackgroundTasks` provient directement de [`starlette.background`](https://www.starlette.dev/background/).
Elle est importée/incluse directement dans **FastAPI** pour que vous puissiez l'importer depuis `fastapi` et éviter d'importer accidentellement `BackgroundTask` (sans `s` à la fin) depuis `starlette.background`.
@@ -69,11 +69,11 @@ En utilisant seulement `BackgroundTasks` (et non `BackgroundTask`), il est possi
Il est tout de même possible d'utiliser `BackgroundTask` seul dans **FastAPI**, mais dans ce cas il faut créer l'objet dans le code et renvoyer une `Response` Starlette l'incluant.
-Plus de détails sont disponibles dans
la documentation officielle de Starlette sur les tâches d'arrière-plan.
+Plus de détails sont disponibles dans [la documentation officielle de Starlette sur les tâches d'arrière-plan](https://www.starlette.dev/background/).
## Avertissement { #caveat }
-Si vous avez besoin de réaliser des traitements lourds en tâche d'arrière-plan et que vous n'avez pas besoin que ces traitements aient lieu dans le même process (par exemple, pas besoin de partager la mémoire, les variables, etc.), il peut s'avérer profitable d'utiliser des outils plus importants tels que
Celery.
+Si vous avez besoin de réaliser des traitements lourds en tâche d'arrière-plan et que vous n'avez pas besoin que ces traitements aient lieu dans le même process (par exemple, pas besoin de partager la mémoire, les variables, etc.), il peut s'avérer profitable d'utiliser des outils plus importants tels que [Celery](https://docs.celeryq.dev).
Ces outils nécessitent généralement des configurations plus complexes ainsi qu'un gestionnaire de queue de message, comme RabbitMQ ou Redis, mais ils permettent d'exécuter des tâches d'arrière-plan dans différents process, et surtout, sur plusieurs serveurs.
diff --git a/docs/fr/docs/tutorial/bigger-applications.md b/docs/fr/docs/tutorial/bigger-applications.md
index 065962236..82e204224 100644
--- a/docs/fr/docs/tutorial/bigger-applications.md
+++ b/docs/fr/docs/tutorial/bigger-applications.md
@@ -123,7 +123,7 @@ Nous allons maintenant utiliser une dépendance simple pour lire un en-tête per
Nous utilisons un en-tête inventé pour simplifier cet exemple.
-Mais dans les cas réels, vous obtiendrez de meilleurs résultats en utilisant les [utilitaires de sécurité](security/index.md){.internal-link target=_blank} intégrés.
+Mais dans les cas réels, vous obtiendrez de meilleurs résultats en utilisant les [utilitaires de sécurité](security/index.md) intégrés.
///
@@ -169,7 +169,7 @@ Et nous pouvons ajouter une liste de `dependencies` qui seront ajoutées à tous
/// tip | Astuce
-Notez que, tout comme pour les [dépendances dans les décorateurs de *chemin d'accès*](dependencies/dependencies-in-path-operation-decorators.md){.internal-link target=_blank}, aucune valeur ne sera transmise à votre *fonction de chemin d'accès*.
+Notez que, tout comme pour les [dépendances dans les décorateurs de *chemin d'accès*](dependencies/dependencies-in-path-operation-decorators.md), aucune valeur ne sera transmise à votre *fonction de chemin d'accès*.
///
@@ -185,8 +185,8 @@ Le résultat final est que les chemins d'item sont désormais :
* Ils incluront tous les `responses` prédéfinies.
* Tous ces *chemins d'accès* auront la liste des `dependencies` évaluées/exécutées avant eux.
* Si vous déclarez également des dépendances dans un *chemin d'accès* spécifique, **elles seront aussi exécutées**.
- * Les dépendances du routeur sont exécutées en premier, puis les [`dependencies` dans le décorateur](dependencies/dependencies-in-path-operation-decorators.md){.internal-link target=_blank}, puis les dépendances des paramètres normaux.
- * Vous pouvez également ajouter des [`Security` dependencies avec des `scopes`](../advanced/security/oauth2-scopes.md){.internal-link target=_blank}.
+ * Les dépendances du routeur sont exécutées en premier, puis les [`dependencies` dans le décorateur](dependencies/dependencies-in-path-operation-decorators.md), puis les dépendances des paramètres normaux.
+ * Vous pouvez également ajouter des [`Security` dependencies avec des `scopes`](../advanced/security/oauth2-scopes.md).
/// tip | Astuce
@@ -303,7 +303,7 @@ Et comme la plupart de votre logique vivra désormais dans son propre module, le
Vous importez et créez une classe `FastAPI` comme d'habitude.
-Et nous pouvons même déclarer des [dépendances globales](dependencies/global-dependencies.md){.internal-link target=_blank} qui seront combinées avec les dépendances de chaque `APIRouter` :
+Et nous pouvons même déclarer des [dépendances globales](dependencies/global-dependencies.md) qui seront combinées avec les dépendances de chaque `APIRouter` :
{* ../../docs_src/bigger_applications/app_an_py310/main.py hl[1,3,7] title["app/main.py"] *}
@@ -353,7 +353,7 @@ La deuxième version est un « import absolu » :
from app.routers import items, users
```
-Pour en savoir plus sur les Packages et Modules Python, lisez
la documentation officielle de Python sur les modules.
+Pour en savoir plus sur les Packages et Modules Python, lisez [la documentation officielle de Python sur les modules](https://docs.python.org/3/tutorial/modules.html).
///
@@ -445,7 +445,7 @@ Ainsi, par exemple, d'autres projets pourraient utiliser le même `APIRouter` av
Nous pouvons également ajouter des *chemins d'accès* directement à l'application `FastAPI`.
-Ici, nous le faisons... juste pour montrer que nous le pouvons 🤷 :
+Ici, nous le faisons ... juste pour montrer que nous le pouvons 🤷 :
{* ../../docs_src/bigger_applications/app_an_py310/main.py hl[21:23] title["app/main.py"] *}
@@ -465,6 +465,37 @@ Comme nous ne pouvons pas simplement les isoler et les « monter » indépendamm
///
+## Configurer l'`entrypoint` dans `pyproject.toml` { #configure-the-entrypoint-in-pyproject-toml }
+
+Comme votre objet FastAPI `app` vit dans `app/main.py`, vous pouvez configurer l'`entrypoint` dans votre fichier `pyproject.toml` comme ceci :
+
+```toml
+[tool.fastapi]
+entrypoint = "app.main:app"
+```
+
+ce qui équivaut à importer ainsi :
+
+```python
+from app.main import app
+```
+
+De cette façon, la commande `fastapi` saura où trouver votre app.
+
+/// Note | Remarque
+
+Vous pourriez aussi passer le chemin à la commande, comme :
+
+```console
+$ fastapi dev app/main.py
+```
+
+Mais vous devriez vous rappeler de passer le bon chemin à chaque fois que vous appelez la commande `fastapi`.
+
+En outre, d'autres outils pourraient ne pas être en mesure de la trouver, par exemple l'[Extension VS Code](../editor-support.md) ou [FastAPI Cloud](https://fastapicloud.com), il est donc recommandé d'utiliser l'`entrypoint` dans `pyproject.toml`.
+
+///
+
## Consulter la documentation API automatique { #check-the-automatic-api-docs }
Maintenant, exécutez votre application :
@@ -472,14 +503,14 @@ Maintenant, exécutez votre application :
```console
-$ fastapi dev app/main.py
+$ fastapi dev
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
```
-Et ouvrez les documents à
http://127.0.0.1:8000/docs.
+Et ouvrez les documents à [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs).
Vous verrez la documentation API automatique, incluant les chemins de tous les sous-modules, utilisant les bons chemins (et préfixes) et les bons tags :
diff --git a/docs/fr/docs/tutorial/body-nested-models.md b/docs/fr/docs/tutorial/body-nested-models.md
index dccfdb6c5..2d4064310 100644
--- a/docs/fr/docs/tutorial/body-nested-models.md
+++ b/docs/fr/docs/tutorial/body-nested-models.md
@@ -96,7 +96,7 @@ Là encore, avec cette simple déclaration, avec FastAPI vous obtenez :
Outre les types singuliers normaux comme `str`, `int`, `float`, etc. vous pouvez utiliser des types singuliers plus complexes qui héritent de `str`.
-Pour voir toutes les options dont vous disposez, consultez
l’aperçu des types de Pydantic. Vous verrez quelques exemples au chapitre suivant.
+Pour voir toutes les options dont vous disposez, consultez [l’aperçu des types de Pydantic](https://docs.pydantic.dev/latest/concepts/types/). Vous verrez quelques exemples au chapitre suivant.
Par exemple, comme dans le modèle `Image` nous avons un champ `url`, nous pouvons le déclarer comme instance de `HttpUrl` de Pydantic au lieu de `str` :
diff --git a/docs/fr/docs/tutorial/body-updates.md b/docs/fr/docs/tutorial/body-updates.md
index 36ad12681..f036dd3c0 100644
--- a/docs/fr/docs/tutorial/body-updates.md
+++ b/docs/fr/docs/tutorial/body-updates.md
@@ -2,7 +2,7 @@
## Mettre à jour en remplaçant avec `PUT` { #update-replacing-with-put }
-Pour mettre à jour un élément, vous pouvez utiliser l’opération
HTTP `PUT`.
+Pour mettre à jour un élément, vous pouvez utiliser l’opération [HTTP `PUT`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PUT).
Vous pouvez utiliser le `jsonable_encoder` pour convertir les données d’entrée en données pouvant être stockées au format JSON (par exemple, avec une base de données NoSQL). Par exemple, convertir `datetime` en `str`.
@@ -24,11 +24,11 @@ Cela signifie que si vous souhaitez mettre à jour l’élément `bar` avec `PUT
comme il n’inclut pas l’attribut déjà enregistré « tax »: 20.2, le modèle d’entrée prendrait la valeur par défaut « tax »: 10.5.
-Et les données seraient enregistrées avec cette « nouvelle » `tax` de `10.5`.
+Et les données seraient enregistrées avec cette « nouvelle » « tax » de 10.5.
## Effectuer des mises à jour partielles avec `PATCH` { #partial-updates-with-patch }
-Vous pouvez également utiliser l’opération
HTTP `PATCH` pour mettre à jour des données de manière partielle.
+Vous pouvez également utiliser l’opération [HTTP `PATCH`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PATCH) pour mettre à jour des données de manière partielle.
Cela signifie que vous pouvez n’envoyer que les données que vous souhaitez mettre à jour, en laissant le reste intact.
@@ -95,6 +95,6 @@ Remarquez que le modèle d’entrée est toujours validé.
Ainsi, si vous souhaitez recevoir des mises à jour partielles pouvant omettre tous les attributs, vous devez disposer d’un modèle avec tous les attributs marqués comme optionnels (avec des valeurs par défaut ou `None`).
-Pour distinguer les modèles avec toutes les valeurs optionnelles pour les mises à jour et les modèles avec des valeurs requises pour la création, vous pouvez utiliser les idées décrites dans [Modèles supplémentaires](extra-models.md){.internal-link target=_blank}.
+Pour distinguer les modèles avec toutes les valeurs optionnelles pour les mises à jour et les modèles avec des valeurs requises pour la création, vous pouvez utiliser les idées décrites dans [Modèles supplémentaires](extra-models.md).
///
diff --git a/docs/fr/docs/tutorial/body.md b/docs/fr/docs/tutorial/body.md
index a8703e030..6a9466798 100644
--- a/docs/fr/docs/tutorial/body.md
+++ b/docs/fr/docs/tutorial/body.md
@@ -4,9 +4,9 @@ Quand vous avez besoin d'envoyer de la donnée depuis un client (comme un naviga
Le corps d'une **requête** est de la donnée envoyée par le client à votre API. Le corps d'une **réponse** est la donnée envoyée par votre API au client.
-Votre API aura presque toujours à envoyer un corps de **réponse**. Mais un client n'a pas toujours à envoyer un **corps de requête** : parfois il demande seulement un chemin, peut-être avec quelques paramètres de requête, mais n'envoie pas de corps.
+Votre API aura presque toujours à envoyer un corps de **réponse**. Mais un client n'a pas toujours à envoyer un **corps de requête** : parfois il demande seulement un chemin, peut-être avec quelques paramètres de requête, mais n'envoie pas de corps.
-Pour déclarer un corps de **requête**, on utilise les modèles de
Pydantic en profitant de tous leurs avantages et fonctionnalités.
+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
@@ -32,9 +32,9 @@ Utilisez les types Python standard pour tous les attributs :
{* ../../docs_src/body/tutorial001_py310.py hl[5:9] *}
-Tout comme pour la déclaration de paramètres de requête, quand un attribut de modèle a une valeur par défaut, il n'est pas nécessaire. Sinon, cet attribut doit être renseigné dans le corps de la requête. Utilisez `None` pour le rendre simplement optionnel.
+Tout comme pour la déclaration de paramètres de requête, quand un attribut de modèle a une valeur par défaut, il n'est pas nécessaire. Sinon, il est requis. Utilisez `None` pour le rendre simplement optionnel.
-Par exemple, le modèle ci-dessus déclare un JSON « `object` » (ou `dict` Python) tel que :
+Par exemple, le modèle ci-dessus déclare un JSON « `object` » (ou `dict` Python) tel que :
```JSON
{
@@ -45,7 +45,7 @@ Par exemple, le modèle ci-dessus déclare un JSON « `object` » (ou `dict` P
}
```
-... `description` et `tax` étant des attributs optionnels (avec `None` comme valeur par défaut), ce JSON « `object` » serait aussi valide :
+... `description` et `tax` étant des attributs optionnels (avec `None` comme valeur par défaut), ce JSON « `object` » serait aussi valide :
```JSON
{
@@ -60,7 +60,7 @@ Pour l'ajouter à votre *chemin d'accès*, déclarez-le comme vous déclareriez
{* ../../docs_src/body/tutorial001_py310.py hl[16] *}
-... et déclarez que son type est le modèle que vous avez créé : `Item`.
+... et déclarez que son type est le modèle que vous avez créé : `Item`.
## Résultats { #results }
@@ -72,7 +72,7 @@ En utilisant uniquement les déclarations de type Python, **FastAPI** réussit
* Si la donnée est invalide, une erreur propre et claire sera renvoyée, indiquant exactement où et quelle était la donnée incorrecte.
* Passer la donnée reçue dans le paramètre `item`.
* Ce paramètre ayant été déclaré dans la fonction comme étant de type `Item`, vous aurez aussi tout le support offert par l'éditeur (autocomplétion, etc.) pour tous les attributs de ce paramètre et les types de ces attributs.
-* Générer des définitions
JSON Schema pour votre modèle ; vous pouvez également les utiliser partout ailleurs si cela a du sens pour votre projet.
+* Générer des définitions [JSON Schema](https://json-schema.org) pour votre modèle ; vous pouvez également les utiliser partout ailleurs si cela a du sens pour votre projet.
* Ces schémas participeront à la constitution du schéma généré OpenAPI, et seront utilisés par les documentations automatiques
UIs.
## Documentation automatique { #automatic-docs }
@@ -101,21 +101,21 @@ Et cela a été rigoureusement testé durant la phase de design, avant toute imp
Des changements sur Pydantic ont même été faits pour supporter cela.
-Les captures d'écran précédentes ont été prises sur
Visual Studio Code.
+Les captures d'écran précédentes ont été prises sur [Visual Studio Code](https://code.visualstudio.com).
-Mais vous auriez le même support de l'éditeur avec
PyCharm et la majorité des autres éditeurs de code Python :
+Mais vous auriez le même support de l'éditeur avec [PyCharm](https://www.jetbrains.com/pycharm/) et la majorité des autres éditeurs de code Python :

/// tip | Astuce
-Si vous utilisez
PyCharm comme éditeur, vous pouvez utiliser le plug-in
Pydantic PyCharm Plugin.
+Si vous utilisez [PyCharm](https://www.jetbrains.com/pycharm/) comme éditeur, vous pouvez utiliser le plug-in [Pydantic PyCharm Plugin](https://github.com/koxudaxi/pydantic-pycharm-plugin/).
Ce qui améliore le support pour les modèles Pydantic avec :
* de l'autocomplétion
* des vérifications de type
-* du « refactoring »
+* du « refactoring »
* de la recherche
* des inspections
@@ -161,4 +161,4 @@ Mais ajouter ces annotations de type permettra à votre éditeur de vous offrir
## Sans Pydantic { #without-pydantic }
-Si vous ne voulez pas utiliser des modèles Pydantic, vous pouvez aussi utiliser des paramètres de **Body**. Pour cela, allez voir la documentation sur [Corps de la requête - Paramètres multiples : Valeurs singulières dans le corps](body-multiple-params.md#singular-values-in-body){.internal-link target=_blank}.
+Si vous ne voulez pas utiliser des modèles Pydantic, vous pouvez aussi utiliser des paramètres de **Body**. Pour cela, allez voir la documentation sur [Corps de la requête - Paramètres multiples : Valeurs singulières dans le corps](body-multiple-params.md#singular-values-in-body).
diff --git a/docs/fr/docs/tutorial/cors.md b/docs/fr/docs/tutorial/cors.md
index 3ae7de07c..e534f2cd1 100644
--- a/docs/fr/docs/tutorial/cors.md
+++ b/docs/fr/docs/tutorial/cors.md
@@ -1,6 +1,6 @@
# CORS (Partage des ressources entre origines) { #cors-cross-origin-resource-sharing }
-
CORS ou « Cross-Origin Resource Sharing » fait référence aux situations où un frontend exécuté dans un navigateur contient du code JavaScript qui communique avec un backend, et où le backend se trouve dans une « origine » différente de celle du frontend.
+[CORS ou « Cross-Origin Resource Sharing »](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) fait référence aux situations où un frontend exécuté dans un navigateur contient du code JavaScript qui communique avec un backend, et où le backend se trouve dans une « origine » différente de celle du frontend.
## Origine { #origin }
@@ -55,10 +55,10 @@ Les arguments suivants sont pris en charge :
* `allow_origins` - Une liste d’origines autorisées à effectuer des requêtes cross-origin. Par ex. `['https://example.org', 'https://www.example.org']`. Vous pouvez utiliser `['*']` pour autoriser n’importe quelle origine.
* `allow_origin_regex` - Une chaîne regex pour faire correspondre les origines autorisées à effectuer des requêtes cross-origin. Par ex. `'https://.*\.example\.org'`.
* `allow_methods` - Une liste de méthodes HTTP qui doivent être autorisées pour les requêtes cross-origin. Par défaut `['GET']`. Vous pouvez utiliser `['*']` pour autoriser toutes les méthodes standard.
-* `allow_headers` - Une liste d’en-têtes HTTP de requête qui doivent être pris en charge pour les requêtes cross-origin. Par défaut `[]`. Vous pouvez utiliser `['*']` pour autoriser tous les en-têtes. Les en-têtes `Accept`, `Accept-Language`, `Content-Language` et `Content-Type` sont toujours autorisés pour les
requêtes CORS simples.
+* `allow_headers` - Une liste d’en-têtes HTTP de requête qui doivent être pris en charge pour les requêtes cross-origin. Par défaut `[]`. Vous pouvez utiliser `['*']` pour autoriser tous les en-têtes. Les en-têtes `Accept`, `Accept-Language`, `Content-Language` et `Content-Type` sont toujours autorisés pour les [requêtes CORS simples](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple_requests).
* `allow_credentials` - Indique que les cookies doivent être pris en charge pour les requêtes cross-origin. Par défaut `False`.
- Aucun de `allow_origins`, `allow_methods` et `allow_headers` ne peut être défini à `['*']` si `allow_credentials` est défini à `True`. Ils doivent tous être
spécifiés explicitement.
+ Aucun de `allow_origins`, `allow_methods` et `allow_headers` ne peut être défini à `['*']` si `allow_credentials` est défini à `True`. Ils doivent tous être [spécifiés explicitement](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#credentialed_requests_and_wildcards).
* `expose_headers` - Indique les en-têtes de réponse qui doivent être accessibles au navigateur. Par défaut `[]`.
* `max_age` - Définit un temps maximum (en secondes) pendant lequel les navigateurs peuvent mettre en cache les réponses CORS. Par défaut `600`.
@@ -77,7 +77,7 @@ Toute requête avec un en-tête `Origin`. Dans ce cas, le middleware laissera pa
## En savoir plus { #more-info }
-Pour plus d’informations sur
CORS, consultez la
documentation CORS de Mozilla.
+Pour plus d’informations sur
CORS, consultez la [documentation CORS de Mozilla](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS).
/// note | Détails techniques
diff --git a/docs/fr/docs/tutorial/debugging.md b/docs/fr/docs/tutorial/debugging.md
index d69e6a3ba..6452b43fa 100644
--- a/docs/fr/docs/tutorial/debugging.md
+++ b/docs/fr/docs/tutorial/debugging.md
@@ -74,7 +74,7 @@ ne sera pas exécutée.
/// info
-Pour plus d'informations, consultez
la documentation officielle de Python.
+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 bf697fe8d..b32728a30 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
@@ -32,7 +32,7 @@ Cela peut également éviter toute confusion pour les nouveaux développeurs qui
Dans cet exemple, nous utilisons des en-têtes personnalisés fictifs `X-Key` et `X-Token`.
-Mais dans des cas réels, lors de l'implémentation de la sécurité, vous tirerez davantage d'avantages en utilisant les [utilitaires de sécurité (chapitre suivant)](../security/index.md){.internal-link target=_blank} intégrés.
+Mais dans des cas réels, lors de l'implémentation de la sécurité, vous tirerez davantage d'avantages en utilisant les [utilitaires de sécurité (chapitre suivant)](../security/index.md) intégrés.
///
@@ -62,7 +62,7 @@ Vous pouvez donc réutiliser une dépendance normale (qui retourne une valeur) q
## Définir des dépendances pour un groupe de chemins d'accès { #dependencies-for-a-group-of-path-operations }
-Plus tard, en lisant comment structurer des applications plus grandes ([Applications plus grandes - Plusieurs fichiers](../../tutorial/bigger-applications.md){.internal-link target=_blank}), éventuellement avec plusieurs fichiers, vous apprendrez à déclarer un unique paramètre `dependencies` pour un groupe de *chemins d'accès*.
+Plus tard, en lisant comment structurer des applications plus grandes ([Applications plus grandes - Plusieurs fichiers](../../tutorial/bigger-applications.md)), éventuellement avec plusieurs fichiers, vous apprendrez à déclarer un unique paramètre `dependencies` pour un groupe de *chemins d'accès*.
## Définir des dépendances globales { #global-dependencies }
diff --git a/docs/fr/docs/tutorial/dependencies/dependencies-with-yield.md b/docs/fr/docs/tutorial/dependencies/dependencies-with-yield.md
index 3f06df767..53d4ae4cf 100644
--- a/docs/fr/docs/tutorial/dependencies/dependencies-with-yield.md
+++ b/docs/fr/docs/tutorial/dependencies/dependencies-with-yield.md
@@ -14,8 +14,8 @@ Vous devez vous assurer d'utiliser `yield` une seule fois par dépendance.
Toute fonction valide à utiliser avec :
-*
`@contextlib.contextmanager` ou
-*
`@contextlib.asynccontextmanager`
+* [`@contextlib.contextmanager`](https://docs.python.org/3/library/contextlib.html#contextlib.contextmanager) ou
+* [`@contextlib.asynccontextmanager`](https://docs.python.org/3/library/contextlib.html#contextlib.asynccontextmanager)
sera valide comme dépendance **FastAPI**.
@@ -87,7 +87,7 @@ Vous pouvez combiner les dépendances comme vous le souhaitez.
/// note | Détails techniques
-Cela fonctionne grâce aux
gestionnaires de contexte de Python.
+Cela fonctionne grâce aux [gestionnaires de contexte](https://docs.python.org/3/library/contextlib.html) de Python.
**FastAPI** les utilise en interne pour y parvenir.
@@ -111,7 +111,7 @@ Mais elle est à votre disposition si vous en avez besoin. 🤓
{* ../../docs_src/dependencies/tutorial008b_an_py310.py hl[18:22,31] *}
-Si vous souhaitez intercepter des exceptions et créer une réponse personnalisée en fonction de cela, créez un [Gestionnaire d'exceptions personnalisé](../handling-errors.md#install-custom-exception-handlers){.internal-link target=_blank}.
+Si vous souhaitez intercepter des exceptions et créer une réponse personnalisée en fonction de cela, créez un [Gestionnaire d'exceptions personnalisé](../handling-errors.md#install-custom-exception-handlers).
## Utiliser des dépendances avec `yield` et `except` { #dependencies-with-yield-and-except }
@@ -233,14 +233,14 @@ participant operation as Path Operation
Les dépendances avec `yield` ont évolué au fil du temps pour couvrir différents cas d'utilisation et corriger certains problèmes.
-Si vous souhaitez voir ce qui a changé dans différentes versions de FastAPI, vous pouvez en savoir plus dans le guide avancé, dans [Dépendances avancées - Dépendances avec `yield`, `HTTPException`, `except` et Background Tasks](../../advanced/advanced-dependencies.md#dependencies-with-yield-httpexception-except-and-background-tasks){.internal-link target=_blank}.
+Si vous souhaitez voir ce qui a changé dans différentes versions de FastAPI, vous pouvez en savoir plus dans le guide avancé, dans [Dépendances avancées - Dépendances avec `yield`, `HTTPException`, `except` et Background Tasks](../../advanced/advanced-dependencies.md#dependencies-with-yield-httpexception-except-and-background-tasks).
## Gestionnaires de contexte { #context-managers }
### Que sont les « Context Managers » { #what-are-context-managers }
Les « Context Managers » sont des objets Python que vous pouvez utiliser dans une instruction `with`.
-Par exemple,
vous pouvez utiliser `with` pour lire un fichier :
+Par exemple, [vous pouvez utiliser `with` pour lire un fichier](https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files) :
```Python
with open("./somefile.txt") as f:
@@ -264,7 +264,7 @@ Si vous débutez avec **FastAPI**, vous voudrez peut-être l'ignorer pour le mom
///
-En Python, vous pouvez créer des gestionnaires de contexte en
créant une classe avec deux méthodes : `__enter__()` et `__exit__()`.
+En Python, vous pouvez créer des gestionnaires de contexte en [créant une classe avec deux méthodes : `__enter__()` et `__exit__()`](https://docs.python.org/3/reference/datamodel.html#context-managers).
Vous pouvez également les utiliser dans des dépendances **FastAPI** avec `yield` en utilisant
des instructions `with` ou `async with` à l'intérieur de la fonction de dépendance :
@@ -275,8 +275,8 @@ des instructions `with` ou `async with` à l'intérieur de la fonction de dépen
Une autre façon de créer un gestionnaire de contexte consiste à utiliser :
-*
`@contextlib.contextmanager` ou
-*
`@contextlib.asynccontextmanager`
+* [`@contextlib.contextmanager`](https://docs.python.org/3/library/contextlib.html#contextlib.contextmanager) ou
+* [`@contextlib.asynccontextmanager`](https://docs.python.org/3/library/contextlib.html#contextlib.asynccontextmanager)
pour décorer une fonction avec un unique `yield`.
diff --git a/docs/fr/docs/tutorial/dependencies/global-dependencies.md b/docs/fr/docs/tutorial/dependencies/global-dependencies.md
index 2c418ee4a..f334c5d50 100644
--- a/docs/fr/docs/tutorial/dependencies/global-dependencies.md
+++ b/docs/fr/docs/tutorial/dependencies/global-dependencies.md
@@ -2,14 +2,14 @@
Pour certains types d'applications, vous pourriez vouloir ajouter des dépendances à l'application entière.
-Comme vous pouvez [ajouter des `dependencies` aux *décorateurs de chemin d'accès*](dependencies-in-path-operation-decorators.md){.internal-link target=_blank}, vous pouvez les ajouter à l'application `FastAPI`.
+Comme vous pouvez [ajouter des `dependencies` aux *décorateurs de chemin d'accès*](dependencies-in-path-operation-decorators.md), vous pouvez les ajouter à l'application `FastAPI`.
Dans ce cas, elles seront appliquées à tous les *chemins d'accès* de l'application :
{* ../../docs_src/dependencies/tutorial012_an_py310.py hl[17] *}
-Et toutes les idées de la section sur [l'ajout de `dependencies` aux *décorateurs de chemin d'accès*](dependencies-in-path-operation-decorators.md){.internal-link target=_blank} s'appliquent toujours, mais dans ce cas à tous les *chemins d'accès* de l'application.
+Et toutes les idées de la section sur [l'ajout de `dependencies` aux *décorateurs de chemin d'accès*](dependencies-in-path-operation-decorators.md) s'appliquent toujours, mais dans ce cas à tous les *chemins d'accès* de l'application.
## Dépendances pour des groupes de *chemins d'accès* { #dependencies-for-groups-of-path-operations }
-Plus tard, en lisant comment structurer des applications plus grandes ([Applications plus grandes - Plusieurs fichiers](../../tutorial/bigger-applications.md){.internal-link target=_blank}), éventuellement avec plusieurs fichiers, vous apprendrez comment déclarer un unique paramètre `dependencies` pour un groupe de *chemins d'accès*.
+Plus tard, en lisant comment structurer des applications plus grandes ([Applications plus grandes - Plusieurs fichiers](../../tutorial/bigger-applications.md)), éventuellement avec plusieurs fichiers, vous apprendrez comment déclarer un unique paramètre `dependencies` pour un groupe de *chemins d'accès*.
diff --git a/docs/fr/docs/tutorial/dependencies/index.md b/docs/fr/docs/tutorial/dependencies/index.md
index 8fad77f62..03eea57e3 100644
--- a/docs/fr/docs/tutorial/dependencies/index.md
+++ b/docs/fr/docs/tutorial/dependencies/index.md
@@ -51,13 +51,13 @@ Dans ce cas, cette dépendance attend :
Puis elle retourne simplement un `dict` contenant ces valeurs.
-/// info | Info
+/// info
FastAPI a ajouté la prise en charge de `Annotated` (et a commencé à le recommander) dans la version 0.95.0.
Si vous avez une version plus ancienne, vous obtiendrez des erreurs en essayant d’utiliser `Annotated`.
-Vous devez vous assurer de [mettre à niveau la version de FastAPI](../../deployment/versions.md#upgrading-the-fastapi-versions){.internal-link target=_blank} vers au moins la 0.95.1 avant d’utiliser `Annotated`.
+Vous devez vous assurer de [mettre à niveau la version de FastAPI](../../deployment/versions.md#upgrading-the-fastapi-versions) vers au moins la 0.95.1 avant d’utiliser `Annotated`.
///
@@ -152,7 +152,7 @@ Peu importe. **FastAPI** saura quoi faire.
/// note | Remarque
-Si vous ne savez pas, consultez la section [Async : *« Pressé ? »*](../../async.md#in-a-hurry){.internal-link target=_blank} à propos de `async` et `await` dans la documentation.
+Si vous ne savez pas, consultez la section [Async : *« Pressé ? »*](../../async.md#in-a-hurry) à propos de `async` et `await` dans la documentation.
///
diff --git a/docs/fr/docs/tutorial/encoder.md b/docs/fr/docs/tutorial/encoder.md
index f94be429c..15a6479ff 100644
--- a/docs/fr/docs/tutorial/encoder.md
+++ b/docs/fr/docs/tutorial/encoder.md
@@ -12,7 +12,7 @@ Imaginons que vous ayez une base de données `fake_db` qui ne reçoit que des do
Par exemple, elle ne reçoit pas d'objets `datetime`, car ceux-ci ne sont pas compatibles avec JSON.
-Ainsi, un objet `datetime` doit être converti en une `str` contenant les données au
format ISO.
+Ainsi, un objet `datetime` doit être converti en une `str` contenant les données au [format ISO](https://en.wikipedia.org/wiki/ISO_8601).
De la même manière, cette base de données n'accepterait pas un modèle Pydantic (un objet avec des attributs), seulement un `dict`.
@@ -24,7 +24,7 @@ Elle reçoit un objet, comme un modèle Pydantic, et renvoie une version compati
Dans cet exemple, elle convertirait le modèle Pydantic en `dict`, et le `datetime` en `str`.
-Le résultat de son appel est quelque chose qui peut être encodé avec la fonction standard de Python
`json.dumps()`.
+Le résultat de son appel est quelque chose qui peut être encodé avec la fonction standard de Python [`json.dumps()`](https://docs.python.org/3/library/json.html#json.dumps).
Elle ne renvoie pas une grande `str` contenant les données au format JSON (sous forme de chaîne). Elle renvoie une structure de données standard de Python (par ex. un `dict`) avec des valeurs et sous-valeurs toutes compatibles avec JSON.
diff --git a/docs/fr/docs/tutorial/extra-data-types.md b/docs/fr/docs/tutorial/extra-data-types.md
index edaa7bd4c..7ee6816c8 100644
--- a/docs/fr/docs/tutorial/extra-data-types.md
+++ b/docs/fr/docs/tutorial/extra-data-types.md
@@ -36,7 +36,7 @@ Voici quelques types de données supplémentaires que vous pouvez utiliser :
* `datetime.timedelta` :
* Un `datetime.timedelta` Python.
* Dans les requêtes et les réponses, il sera représenté sous forme de `float` de secondes totales.
- * Pydantic permet aussi de le représenter sous la forme d'un « encodage de différence de temps ISO 8601 »,
voir la documentation pour plus d'informations.
+ * Pydantic permet aussi de le représenter sous la forme d'un « encodage de différence de temps ISO 8601 », [voir la documentation pour plus d'informations](https://docs.pydantic.dev/latest/concepts/serialization/#custom-serializers).
* `frozenset` :
* Dans les requêtes et les réponses, traité de la même manière qu'un `set` :
* Dans les requêtes, une liste sera lue, les doublons éliminés, puis convertie en `set`.
@@ -49,7 +49,7 @@ Voici quelques types de données supplémentaires que vous pouvez utiliser :
* `Decimal` :
* `Decimal` Python standard.
* Dans les requêtes et les réponses, géré de la même manière qu'un `float`.
-* Vous pouvez consulter tous les types de données Pydantic valides ici :
Types de données Pydantic.
+* Vous pouvez consulter tous les types de données Pydantic valides ici : [Types de données Pydantic](https://docs.pydantic.dev/latest/usage/types/types/).
## Exemple { #example }
diff --git a/docs/fr/docs/tutorial/extra-models.md b/docs/fr/docs/tutorial/extra-models.md
index 1f9eb1561..24a3fa31b 100644
--- a/docs/fr/docs/tutorial/extra-models.md
+++ b/docs/fr/docs/tutorial/extra-models.md
@@ -12,7 +12,7 @@ C'est particulièrement vrai pour les modèles d'utilisateur, car :
Ne stockez jamais les mots de passe des utilisateurs en clair. Stockez toujours un « hachage sécurisé » que vous pourrez ensuite vérifier.
-Si vous ne savez pas ce que c'est, vous apprendrez ce qu'est un « hachage de mot de passe » dans les [chapitres sur la sécurité](security/simple-oauth2.md#password-hashing){.internal-link target=_blank}.
+Si vous ne savez pas ce que c'est, vous apprendrez ce qu'est un « hachage de mot de passe » dans les [chapitres sur la sécurité](security/simple-oauth2.md#password-hashing).
///
@@ -162,11 +162,11 @@ Vous pouvez déclarer qu'une réponse est l'`Union` de deux types ou plus, ce qu
Cela sera défini dans OpenAPI avec `anyOf`.
-Pour ce faire, utilisez l'annotation de type Python standard
`typing.Union` :
+Pour ce faire, utilisez l'annotation de type Python standard [`typing.Union`](https://docs.python.org/3/library/typing.html#typing.Union) :
/// note | Remarque
-Lors de la définition d'une
`Union`, incluez d'abord le type le plus spécifique, suivi du type le moins spécifique. Dans l'exemple ci-dessous, le type le plus spécifique `PlaneItem` précède `CarItem` dans `Union[PlaneItem, CarItem]`.
+Lors de la définition d'une [`Union`](https://docs.pydantic.dev/latest/concepts/types/#unions), incluez d'abord le type le plus spécifique, suivi du type le moins spécifique. Dans l'exemple ci-dessous, le type le plus spécifique `PlaneItem` précède `CarItem` dans `Union[PlaneItem, CarItem]`.
///
diff --git a/docs/fr/docs/tutorial/first-steps.md b/docs/fr/docs/tutorial/first-steps.md
index ae2358468..0a82004d2 100644
--- a/docs/fr/docs/tutorial/first-steps.md
+++ b/docs/fr/docs/tutorial/first-steps.md
@@ -11,7 +11,7 @@ Démarrez le serveur en direct :
```console
-$
fastapi dev
main.py
+$
fastapi dev
FastAPI Starting development server 🚀
@@ -58,7 +58,7 @@ Cette ligne montre l’URL où votre application est servie, sur votre machine l
### Vérifier { #check-it }
-Ouvrez votre navigateur à l’adresse
http://127.0.0.1:8000.
+Ouvrez votre navigateur à l’adresse [http://127.0.0.1:8000](http://127.0.0.1:8000).
Vous verrez la réponse JSON suivante :
@@ -68,17 +68,17 @@ Vous verrez la réponse JSON suivante :
### Documentation interactive de l’API { #interactive-api-docs }
-Allez maintenant sur
http://127.0.0.1:8000/docs.
+Allez maintenant sur [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs).
-Vous verrez la documentation interactive de l’API générée automatiquement (fournie par
Swagger UI) :
+Vous verrez la documentation interactive de l’API générée automatiquement (fournie par [Swagger UI](https://github.com/swagger-api/swagger-ui)) :

### Documentation alternative de l’API { #alternative-api-docs }
-Et maintenant, allez sur
http://127.0.0.1:8000/redoc.
+Et maintenant, allez sur [http://127.0.0.1:8000/redoc](http://127.0.0.1:8000/redoc).
-Vous verrez la documentation automatique alternative (fournie par
ReDoc) :
+Vous verrez la documentation automatique alternative (fournie par [ReDoc](https://github.com/Rebilly/ReDoc)) :

@@ -92,7 +92,7 @@ Un « schéma » est une définition ou une description de quelque chose. Pas le
#### « Schéma » d’API { #api-schema }
-Ici,
OpenAPI est une spécification qui dicte comment définir le schéma de votre API.
+Ici, [OpenAPI](https://github.com/OAI/OpenAPI-Specification) est une spécification qui dicte comment définir le schéma de votre API.
Cette définition de schéma inclut les chemins de votre API, les paramètres possibles qu’ils prennent, etc.
@@ -110,7 +110,7 @@ OpenAPI définit un schéma d’API pour votre API. Et ce schéma inclut des dé
Si vous êtes curieux de voir à quoi ressemble le schéma OpenAPI brut, FastAPI génère automatiquement un JSON (schéma) avec les descriptions de toute votre API.
-Vous pouvez le voir directement à l’adresse :
http://127.0.0.1:8000/openapi.json.
+Vous pouvez le voir directement à l’adresse : [http://127.0.0.1:8000/openapi.json](http://127.0.0.1:8000/openapi.json).
Il affichera un JSON commençant par quelque chose comme :
@@ -143,9 +143,58 @@ Et il existe des dizaines d’alternatives, toutes basées sur OpenAPI. Vous pou
Vous pourriez également l’utiliser pour générer du code automatiquement, pour les clients qui communiquent avec votre API. Par exemple, des applications frontend, mobiles ou IoT.
+### Configurer le `entrypoint` de l’application dans `pyproject.toml` { #configure-the-app-entrypoint-in-pyproject-toml }
+
+Vous pouvez configurer l’emplacement de votre application dans un fichier `pyproject.toml` comme :
+
+```toml
+[tool.fastapi]
+entrypoint = "main:app"
+```
+
+Ce `entrypoint` indiquera à la commande `fastapi` qu’elle doit importer l’application comme :
+
+```python
+from main import app
+```
+
+Si votre code est structuré comme :
+
+```
+.
+├── backend
+│ ├── main.py
+│ ├── __init__.py
+```
+
+Alors vous définiriez le `entrypoint` comme :
+
+```toml
+[tool.fastapi]
+entrypoint = "backend.main:app"
+```
+
+ce qui équivaudrait à :
+
+```python
+from backend.main import app
+```
+
+### `fastapi dev` avec un chemin { #fastapi-dev-with-path }
+
+Vous pouvez également passer le chemin du fichier à la commande `fastapi dev`, et elle devinera l’objet d’application FastAPI à utiliser :
+
+```console
+$ fastapi dev main.py
+```
+
+Mais vous devrez vous souvenir de passer le chemin 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, allez rejoindre la liste d’attente si ce n’est pas déjà fait. 🚀
+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.
@@ -191,7 +240,7 @@ C’est tout ! Vous pouvez maintenant accéder à votre application à cette URL
`FastAPI` est une classe qui hérite directement de `Starlette`.
-Vous pouvez donc aussi utiliser toutes les fonctionnalités de
Starlette avec `FastAPI`.
+Vous pouvez donc aussi utiliser toutes les fonctionnalités de [Starlette](https://www.starlette.dev/) avec `FastAPI`.
///
@@ -336,7 +385,7 @@ Vous pouvez aussi la définir comme une fonction normale au lieu de `async def`
/// note | Remarque
-Si vous ne connaissez pas la différence, consultez [Asynchrone : « Pressé ? »](../async.md#in-a-hurry){.internal-link target=_blank}.
+Si vous ne connaissez pas la différence, consultez [Asynchrone : « Pressé ? »](../async.md#in-a-hurry).
///
@@ -352,11 +401,11 @@ Il existe de nombreux autres objets et modèles qui seront automatiquement conve
### Étape 6 : le déployer { #step-6-deploy-it }
-Déployez votre application sur **
FastAPI Cloud** avec une seule commande : `fastapi deploy`. 🎉
+Déployez votre application sur **[FastAPI Cloud](https://fastapicloud.com)** avec une seule commande : `fastapi deploy`. 🎉
#### À propos de FastAPI Cloud { #about-fastapi-cloud }
-**
FastAPI Cloud** est construit par le même auteur et l’équipe derrière **FastAPI**.
+**[FastAPI Cloud](https://fastapicloud.com)** est construit par le même auteur et l’équipe derrière **FastAPI**.
Il simplifie le processus de **construction**, de **déploiement** et d’**accès** à une API avec un minimum d’effort.
diff --git a/docs/fr/docs/tutorial/handling-errors.md b/docs/fr/docs/tutorial/handling-errors.md
index 38935c21c..a697571f3 100644
--- a/docs/fr/docs/tutorial/handling-errors.md
+++ b/docs/fr/docs/tutorial/handling-errors.md
@@ -81,7 +81,7 @@ Mais si vous en aviez besoin pour un scénario avancé, vous pouvez ajouter des
## Installer des gestionnaires d'exception personnalisés { #install-custom-exception-handlers }
-Vous pouvez ajouter des gestionnaires d'exception personnalisés avec
les mêmes utilitaires d'exception de Starlette.
+Vous pouvez ajouter des gestionnaires d'exception personnalisés avec [les mêmes utilitaires d'exception de Starlette](https://www.starlette.dev/exceptions/).
Supposons que vous ayez une exception personnalisée `UnicornException` que vous (ou une bibliothèque que vous utilisez) pourriez `raise`.
diff --git a/docs/fr/docs/tutorial/index.md b/docs/fr/docs/tutorial/index.md
index 0251b9b4b..2fc177ed9 100644
--- a/docs/fr/docs/tutorial/index.md
+++ b/docs/fr/docs/tutorial/index.md
@@ -10,12 +10,12 @@ Il est également conçu pour servir de référence ultérieure, afin que vous p
Tous les blocs de code peuvent être copiés et utilisés directement (il s'agit en fait de fichiers Python testés).
-Pour exécuter l'un de ces exemples, copiez le code dans un fichier `main.py`, et démarrez `fastapi dev` avec :
+Pour exécuter l'un de ces exemples, copiez le code dans un fichier `main.py`, et démarrez `fastapi dev` :
```console
-$
fastapi dev
main.py
+$
fastapi dev
FastAPI Starting development server 🚀
@@ -62,7 +62,7 @@ L'utiliser dans votre éditeur est ce qui vous montre vraiment les avantages de
La première étape consiste à installer FastAPI.
-Assurez-vous de créer un [environnement virtuel](../virtual-environments.md){.internal-link target=_blank}, de l'activer, puis **d'installer FastAPI** :
+Assurez-vous de créer un [environnement virtuel](../virtual-environments.md), de l'activer, puis **d'installer FastAPI** :
@@ -76,7 +76,7 @@ $ pip install "fastapi[standard]"
/// note | Remarque
-Lorsque vous installez avec `pip install "fastapi[standard]"` cela inclut des dépendances standard optionnelles par défaut, y compris `fastapi-cloud-cli`, qui vous permet de déployer sur
FastAPI Cloud.
+Lorsque vous installez avec `pip install "fastapi[standard]"`, cela inclut des dépendances standards optionnelles par défaut, y compris `fastapi-cloud-cli`, qui vous permet de déployer sur [FastAPI Cloud](https://fastapicloud.com).
Si vous ne souhaitez pas avoir ces dépendances optionnelles, vous pouvez à la place installer `pip install fastapi`.
@@ -84,6 +84,12 @@ Si vous souhaitez installer les dépendances standard mais sans `fastapi-cloud-c
///
+/// tip | Astuce
+
+FastAPI dispose d'une [extension officielle pour VS Code](https://marketplace.visualstudio.com/items?itemName=FastAPILabs.fastapi-vscode) (et Cursor), qui fournit de nombreuses fonctionnalités, notamment un explorateur de chemins d'accès, une recherche de chemins d'accès, la navigation CodeLens dans les tests (aller à la définition depuis les tests), ainsi que le déploiement et les journaux FastAPI Cloud, le tout depuis votre éditeur.
+
+///
+
## Guide d'utilisation avancé { #advanced-user-guide }
Il existe également un **Guide d'utilisation avancé** que vous pouvez lire plus tard après ce **Tutoriel - Guide d'utilisation**.
diff --git a/docs/fr/docs/tutorial/metadata.md b/docs/fr/docs/tutorial/metadata.md
index 3ea3865ba..87f72fefa 100644
--- a/docs/fr/docs/tutorial/metadata.md
+++ b/docs/fr/docs/tutorial/metadata.md
@@ -14,7 +14,7 @@ Vous pouvez définir les champs suivants qui sont utilisés dans la spécificati
| `version` | `string` | La version de l’API. C’est la version de votre propre application, pas d’OpenAPI. Par exemple `2.5.0`. |
| `terms_of_service` | `str` | Une URL vers les Conditions d’utilisation de l’API. Le cas échéant, il doit s’agir d’une URL. |
| `contact` | `dict` | Les informations de contact pour l’API exposée. Cela peut contenir plusieurs champs.
champs de contact
| Paramètre | Type | Description |
|---|
name | str | Le nom identifiant de la personne/organisation de contact. |
url | str | L’URL pointant vers les informations de contact. DOIT être au format d’une URL. |
email | str | L’adresse e-mail de la personne/organisation de contact. DOIT être au format d’une adresse e-mail. |
|
-| `license_info` | `dict` | Les informations de licence pour l’API exposée. Cela peut contenir plusieurs champs.
champs de license_info
| Paramètre | Type | Description |
|---|
name | str | OBLIGATOIRE (si un license_info est défini). Le nom de la licence utilisée pour l’API. |
identifier | str | Une expression de licence SPDX pour l’API. Le champ identifier est mutuellement exclusif du champ url. Disponible depuis OpenAPI 3.1.0, FastAPI 0.99.0. |
url | str | Une URL vers la licence utilisée pour l’API. DOIT être au format d’une URL. |
|
+| `license_info` | `dict` | Les informations de licence pour l’API exposée. Cela peut contenir plusieurs champs.
champs de license_info
| Paramètre | Type | Description |
|---|
name | str | OBLIGATOIRE (si un license_info est défini). Le nom de la licence utilisée pour l’API. |
identifier | str | Une expression de licence [SPDX](https://spdx.org/licenses/) pour l’API. Le champ identifier est mutuellement exclusif du champ url. Disponible depuis OpenAPI 3.1.0, FastAPI 0.99.0. |
url | str | Une URL vers la licence utilisée pour l’API. DOIT être au format d’une URL. |
|
Vous pouvez les définir comme suit :
@@ -76,7 +76,7 @@ Utilisez le paramètre `tags` avec vos *chemins d'accès* (et `APIRouter`s) pour
/// info
-En savoir plus sur les tags dans [Configuration de chemins d'accès](path-operation-configuration.md#tags){.internal-link target=_blank}.
+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/middleware.md b/docs/fr/docs/tutorial/middleware.md
index 6cbbc3e45..860b8041c 100644
--- a/docs/fr/docs/tutorial/middleware.md
+++ b/docs/fr/docs/tutorial/middleware.md
@@ -15,7 +15,7 @@ Un « middleware » est une fonction qui agit sur chaque **requête** avant qu
Si vous avez des dépendances avec `yield`, le code de sortie s’exécutera après le middleware.
-S’il y avait des tâches d’arrière-plan (présentées dans la section [Tâches d’arrière-plan](background-tasks.md){.internal-link target=_blank}, que vous verrez plus tard), elles s’exécuteront après tous les middlewares.
+S’il y avait des tâches d’arrière-plan (présentées dans la section [Tâches d’arrière-plan](background-tasks.md), que vous verrez plus tard), elles s’exécuteront après tous les middlewares.
///
@@ -35,9 +35,9 @@ La fonction de middleware reçoit :
/// tip | Astuce
-Gardez à l’esprit que des en-têtes propriétaires personnalisés peuvent être ajoutés
en utilisant le préfixe `X-`.
+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 rendre visibles pour un client dans un navigateur, vous devez les ajouter à votre configuration CORS ([CORS (Partage des ressources entre origines)](cors.md){.internal-link target=_blank}) en utilisant le paramètre `expose_headers` documenté dans
la documentation CORS de Starlette.
+Mais si vous avez des en-têtes personnalisés que vous voulez rendre visibles pour un client dans un navigateur, vous devez les ajouter à votre configuration CORS ([CORS (Partage des ressources entre origines)](cors.md)) en utilisant le paramètre `expose_headers` documenté dans [la documentation CORS de Starlette](https://www.starlette.dev/middleware/#corsmiddleware).
///
@@ -61,7 +61,7 @@ Par exemple, vous pourriez ajouter un en-tête personnalisé `X-Process-Time` co
/// tip | Astuce
-Ici, nous utilisons
`time.perf_counter()` au lieu de `time.time()` car cela peut être plus précis pour ces cas d’usage. 🤓
+Ici, nous utilisons [`time.perf_counter()`](https://docs.python.org/3/library/time.html#time.perf_counter) au lieu de `time.time()` car cela peut être plus précis pour ces cas d’usage. 🤓
///
@@ -90,6 +90,6 @@ Ce comportement d’empilement garantit que les middlewares s’exécutent dans
## Autres middlewares { #other-middlewares }
-Vous pouvez en lire davantage sur d’autres middlewares dans le [Guide de l’utilisateur avancé : Middleware avancé](../advanced/middleware.md){.internal-link target=_blank}.
+Vous pouvez en lire davantage sur d’autres middlewares dans le [Guide de l’utilisateur avancé : Middleware avancé](../advanced/middleware.md).
Vous verrez comment gérer
CORS avec un middleware dans la section suivante.
diff --git a/docs/fr/docs/tutorial/path-operation-configuration.md b/docs/fr/docs/tutorial/path-operation-configuration.md
index f8041fa69..185adb6dd 100644
--- a/docs/fr/docs/tutorial/path-operation-configuration.md
+++ b/docs/fr/docs/tutorial/path-operation-configuration.md
@@ -58,7 +58,7 @@ Vous pouvez ajouter un `summary` et une `description` :
Comme les descriptions ont tendance à être longues et à couvrir plusieurs lignes, vous pouvez déclarer la description du *chemin d'accès* dans la
docstring de la fonction et **FastAPI** la lira à partir de là.
-Vous pouvez écrire
Markdown dans la docstring, il sera interprété et affiché correctement (en tenant compte de l'indentation de la docstring).
+Vous pouvez écrire [Markdown](https://en.wikipedia.org/wiki/Markdown) dans la docstring, il sera interprété et affiché correctement (en tenant compte de l'indentation de la docstring).
{* ../../docs_src/path_operation_configuration/tutorial004_py310.py hl[17:25] *}
diff --git a/docs/fr/docs/tutorial/path-params-numeric-validations.md b/docs/fr/docs/tutorial/path-params-numeric-validations.md
index 2dbaaa8ca..b61b42ef7 100644
--- a/docs/fr/docs/tutorial/path-params-numeric-validations.md
+++ b/docs/fr/docs/tutorial/path-params-numeric-validations.md
@@ -14,7 +14,7 @@ FastAPI a ajouté le support pour `Annotated` (et a commencé à le recommander)
Si vous avez une version plus ancienne, vous obtiendrez des erreurs en essayant d'utiliser `Annotated`.
-Assurez-vous de [Mettre à niveau la version de FastAPI](../deployment/versions.md#upgrading-the-fastapi-versions){.internal-link target=_blank} à la version 0.95.1 à minima avant d'utiliser `Annotated`.
+Assurez-vous de [Mettre à niveau la version de FastAPI](../deployment/versions.md#upgrading-the-fastapi-versions) à la version 0.95.1 à minima avant d'utiliser `Annotated`.
///
@@ -112,17 +112,17 @@ La même chose s'applique pour :
Les validations numériques fonctionnent également pour les valeurs `float`.
-C'est ici qu'il devient important de pouvoir déclarer
gt et pas seulement
ge. Avec cela, vous pouvez exiger, par exemple, qu'une valeur doit être supérieure à `0`, même si elle est inférieure à `1`.
+C'est ici qu'il devient important de pouvoir déclarer
gt et pas seulement
ge. Avec cela, vous pouvez exiger, par exemple, qu'une valeur doit être supérieure à `0`, même si elle est inférieure à `1`.
Ainsi, `0.5` serait une valeur valide. Mais `0.0` ou `0` ne le serait pas.
-Et la même chose pour
lt.
+Et la même chose pour
lt.
{* ../../docs_src/path_params_numeric_validations/tutorial006_an_py310.py hl[13] *}
## Pour résumer { #recap }
-Avec `Query`, `Path` (et d'autres que vous verrez plus tard) vous pouvez déclarer des métadonnées et des validations de chaînes de la même manière qu'avec les [Paramètres de requête et validations de chaînes](query-params-str-validations.md){.internal-link target=_blank}.
+Avec `Query`, `Path` (et d'autres que vous verrez plus tard) vous pouvez déclarer des métadonnées et des validations de chaînes de la même manière qu'avec les [Paramètres de requête et validations de chaînes](query-params-str-validations.md).
Et vous pouvez également déclarer des validations numériques :
diff --git a/docs/fr/docs/tutorial/path-params.md b/docs/fr/docs/tutorial/path-params.md
index 985eff635..f84c4c035 100644
--- a/docs/fr/docs/tutorial/path-params.md
+++ b/docs/fr/docs/tutorial/path-params.md
@@ -6,7 +6,7 @@ Vous pouvez déclarer des « paramètres » ou « variables » de chemin avec la
La valeur du paramètre de chemin `item_id` sera transmise à votre fonction dans l'argument `item_id`.
-Donc, si vous exécutez cet exemple et allez sur
http://127.0.0.1:8000/items/foo, vous verrez comme réponse :
+Donc, si vous exécutez cet exemple et allez sur [http://127.0.0.1:8000/items/foo](http://127.0.0.1:8000/items/foo), vous verrez comme réponse :
```JSON
{"item_id":"foo"}
@@ -28,7 +28,7 @@ Cela vous apporte la prise en charge par l'éditeur dans votre fonction, avec v
##
Conversion de données { #data-conversion }
-Si vous exécutez cet exemple et ouvrez votre navigateur sur
http://127.0.0.1:8000/items/3, vous verrez comme réponse :
+Si vous exécutez cet exemple et ouvrez votre navigateur sur [http://127.0.0.1:8000/items/3](http://127.0.0.1:8000/items/3), vous verrez comme réponse :
```JSON
{"item_id":3}
@@ -44,7 +44,7 @@ Ainsi, avec cette déclaration de type, **FastAPI** vous fournit automatiquement
## Validation de données { #data-validation }
-Mais si vous allez dans le navigateur sur
http://127.0.0.1:8000/items/foo, vous verrez une belle erreur HTTP :
+Mais si vous allez dans le navigateur sur [http://127.0.0.1:8000/items/foo](http://127.0.0.1:8000/items/foo), vous verrez une belle erreur HTTP :
```JSON
{
@@ -64,7 +64,7 @@ Mais si vous allez dans le navigateur sur
http://127.0.0.1:8000/items/4.2
+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
@@ -78,7 +78,7 @@ C'est incroyablement utile lors du développement et du débogage du code qui in
## Documentation { #documentation }
-Et lorsque vous ouvrez votre navigateur sur
http://127.0.0.1:8000/docs, vous verrez une documentation d'API automatique et interactive comme :
+Et lorsque vous ouvrez votre navigateur sur [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs), vous verrez une documentation d'API automatique et interactive comme :

@@ -92,9 +92,9 @@ Remarquez que le paramètre de chemin est déclaré comme entier.
## Les avantages d'une norme, documentation alternative { #standards-based-benefits-alternative-documentation }
-Et comme le schéma généré suit la norme
OpenAPI, il existe de nombreux outils compatibles.
+Et comme le schéma généré suit la norme [OpenAPI](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md), il existe de nombreux outils compatibles.
-Grâce à cela, **FastAPI** fournit lui-même une documentation d'API alternative (utilisant ReDoc), accessible sur
http://127.0.0.1:8000/redoc :
+Grâce à cela, **FastAPI** fournit lui-même une documentation d'API alternative (utilisant ReDoc), accessible sur [http://127.0.0.1:8000/redoc](http://127.0.0.1:8000/redoc) :

@@ -102,7 +102,7 @@ De la même façon, il existe de nombreux outils compatibles, y compris des outi
## Pydantic { #pydantic }
-Toute la validation de données est effectuée sous le capot par
Pydantic, vous en bénéficiez donc pleinement. Vous savez ainsi que vous êtes entre de bonnes mains.
+Toute la validation de données est effectuée sous le capot par [Pydantic](https://docs.pydantic.dev/), vous en bénéficiez donc pleinement. Vous savez ainsi que vous êtes entre de bonnes mains.
Vous pouvez utiliser les mêmes déclarations de type avec `str`, `float`, `bool` et de nombreux autres types de données complexes.
@@ -130,7 +130,7 @@ Le premier sera toujours utilisé puisque le chemin correspond en premier.
## Valeurs prédéfinies { #predefined-values }
-Si vous avez un *chemin d'accès* qui reçoit un *paramètre de chemin*, mais que vous voulez que les valeurs possibles de ce *paramètre de chemin* soient prédéfinies, vous pouvez utiliser une
`Enum` Python standard.
+Si vous avez un *chemin d'accès* qui reçoit un *paramètre de chemin*, mais que vous voulez que les valeurs possibles de ce *paramètre de chemin* soient prédéfinies, vous pouvez utiliser une
`Enum` Python standard.
### Créer une classe `Enum` { #create-an-enum-class }
diff --git a/docs/fr/docs/tutorial/query-params-str-validations.md b/docs/fr/docs/tutorial/query-params-str-validations.md
index 17b751f23..57d358758 100644
--- a/docs/fr/docs/tutorial/query-params-str-validations.md
+++ b/docs/fr/docs/tutorial/query-params-str-validations.md
@@ -35,13 +35,13 @@ FastAPI a ajouté la prise en charge de `Annotated` (et a commencé à le recomm
Si vous avez une version plus ancienne, vous obtiendrez des erreurs en essayant d’utiliser `Annotated`.
-Assurez-vous de [mettre à niveau la version de FastAPI](../deployment/versions.md#upgrading-the-fastapi-versions){.internal-link target=_blank} vers au moins 0.95.1 avant d’utiliser `Annotated`.
+Assurez-vous de [mettre à niveau la version de FastAPI](../deployment/versions.md#upgrading-the-fastapi-versions) vers au moins 0.95.1 avant d’utiliser `Annotated`.
///
## Utiliser `Annotated` dans le type pour le paramètre `q` { #use-annotated-in-the-type-for-the-q-parameter }
-Vous vous souvenez que je vous ai dit plus tôt que `Annotated` peut être utilisé pour ajouter des métadonnées à vos paramètres dans l’[Introduction aux types Python](../python-types.md#type-hints-with-metadata-annotations){.internal-link target=_blank} ?
+Vous vous souvenez que je vous ai dit plus tôt que `Annotated` peut être utilisé pour ajouter des métadonnées à vos paramètres dans l’[Introduction aux types Python](../python-types.md#type-hints-with-metadata-annotations) ?
C’est le moment de l’utiliser avec FastAPI. 🚀
@@ -157,7 +157,7 @@ Vous pouvez **appeler** cette même fonction dans **d’autres endroits** sans F
Quand vous n’utilisez pas `Annotated` et utilisez à la place l’**ancienne** méthode avec la **valeur par défaut**, si vous appelez cette fonction sans FastAPI dans **d’autres endroits**, vous devez **penser** à passer les arguments à la fonction pour qu’elle fonctionne correctement, sinon les valeurs seront différentes de ce que vous attendez (par ex. `QueryInfo` ou quelque chose de similaire au lieu d’une `str`). Et votre éditeur ne se plaindra pas, et Python ne se plaindra pas en exécutant cette fonction, seulement quand les opérations internes échoueront.
-Comme `Annotated` peut avoir plus d’une annotation de métadonnées, vous pouvez maintenant même utiliser la même fonction avec d’autres outils, comme
Typer. 🚀
+Comme `Annotated` peut avoir plus d’une annotation de métadonnées, vous pouvez maintenant même utiliser la même fonction avec d’autres outils, comme [Typer](https://typer.tiangolo.com/). 🚀
## Ajouter plus de validations { #add-more-validations }
@@ -369,11 +369,11 @@ Il peut y avoir des cas où vous devez faire une **validation personnalisée** q
Dans ces cas, vous pouvez utiliser une **fonction de validation personnalisée** qui est appliquée après la validation normale (par ex. après avoir validé que la valeur est une `str`).
-Vous pouvez y parvenir en utilisant
`AfterValidator` de Pydantic à l’intérieur de `Annotated`.
+Vous pouvez y parvenir en utilisant [`AfterValidator` de Pydantic](https://docs.pydantic.dev/latest/concepts/validators/#field-after-validator) à l’intérieur de `Annotated`.
/// tip | Astuce
-Pydantic a aussi
`BeforeValidator` et d’autres. 🤓
+Pydantic a aussi [`BeforeValidator`](https://docs.pydantic.dev/latest/concepts/validators/#field-before-validator) et d’autres. 🤓
///
diff --git a/docs/fr/docs/tutorial/query-params.md b/docs/fr/docs/tutorial/query-params.md
index 01540ad17..8ecbc2853 100644
--- a/docs/fr/docs/tutorial/query-params.md
+++ b/docs/fr/docs/tutorial/query-params.md
@@ -111,7 +111,7 @@ ou n'importe quelle autre variation de casse (tout en majuscules, uniquement la
## Multiples paramètres de chemin et de requête { #multiple-path-and-query-parameters }
-Vous pouvez déclarer plusieurs paramètres de chemin et paramètres de requête en même temps, FastAPI sait lequel est lequel.
+Vous pouvez déclarer plusieurs paramètres de chemin et paramètres de requête en même temps, **FastAPI** sait lequel est lequel.
Et vous n'avez pas besoin de les déclarer dans un ordre spécifique.
@@ -182,6 +182,6 @@ Dans ce cas, il y a 3 paramètres de requête :
/// tip | Astuce
-Vous pourriez aussi utiliser des `Enum`s de la même façon qu'avec les [Paramètres de chemin](path-params.md#predefined-values){.internal-link target=_blank}.
+Vous pourriez aussi utiliser des `Enum`s de la même façon qu'avec les [Paramètres de chemin](path-params.md#predefined-values).
///
diff --git a/docs/fr/docs/tutorial/request-files.md b/docs/fr/docs/tutorial/request-files.md
index 01a0b72eb..e55f8e57f 100644
--- a/docs/fr/docs/tutorial/request-files.md
+++ b/docs/fr/docs/tutorial/request-files.md
@@ -4,9 +4,9 @@ Vous pouvez définir des fichiers à téléverser par le client en utilisant `Fi
/// info
-Pour recevoir des fichiers téléversés, installez d'abord
`python-multipart`.
+Pour recevoir des fichiers téléversés, installez d'abord [`python-multipart`](https://github.com/Kludex/python-multipart).
-Assurez-vous de créer un [environnement virtuel](../virtual-environments.md){.internal-link target=_blank}, de l'activer, puis d'installer le paquet, par exemple :
+Assurez-vous de créer un [environnement virtuel](../virtual-environments.md), de l'activer, puis d'installer le paquet, par exemple :
```console
$ pip install python-multipart
@@ -63,8 +63,8 @@ Utiliser `UploadFile` présente plusieurs avantages par rapport à `bytes` :
- Un fichier stocké en mémoire jusqu'à une taille maximale, puis, au-delà de cette limite, stocké sur le disque.
- Cela fonctionne donc bien pour des fichiers volumineux comme des images, des vidéos, de gros binaires, etc., sans consommer toute la mémoire.
- Vous pouvez obtenir des métadonnées à partir du fichier téléversé.
-- Il offre une interface `async` de type
file-like.
-- Il expose un véritable objet Python
`SpooledTemporaryFile` que vous pouvez passer directement à d'autres bibliothèques qui attendent un objet « file-like ».
+- Il offre une interface `async` de type [file-like](https://docs.python.org/3/glossary.html#term-file-like-object).
+- Il expose un véritable objet Python [`SpooledTemporaryFile`](https://docs.python.org/3/library/tempfile.html#tempfile.SpooledTemporaryFile) que vous pouvez passer directement à d'autres bibliothèques qui attendent un objet « file-like ».
### `UploadFile` { #uploadfile }
@@ -72,7 +72,7 @@ Utiliser `UploadFile` présente plusieurs avantages par rapport à `bytes` :
- `filename` : une `str` contenant le nom de fichier original téléversé (par ex. `myimage.jpg`).
- `content_type` : une `str` avec le type de contenu (type MIME / type média) (par ex. `image/jpeg`).
-- `file` : un
`SpooledTemporaryFile` (un objet
de type fichier). C'est l'objet fichier Python réel que vous pouvez passer directement à d'autres fonctions ou bibliothèques qui attendent un objet « file-like ».
+- `file` : un [`SpooledTemporaryFile`](https://docs.python.org/3/library/tempfile.html#tempfile.SpooledTemporaryFile) (un objet [file-like](https://docs.python.org/3/glossary.html#term-file-like-object)). C'est l'objet fichier Python réel que vous pouvez passer directement à d'autres fonctions ou bibliothèques qui attendent un objet « file-like ».
`UploadFile` a les méthodes `async` suivantes. Elles appellent toutes les méthodes correspondantes du fichier sous-jacent (en utilisant le `SpooledTemporaryFile` interne).
@@ -121,7 +121,7 @@ Les données des formulaires sont normalement encodées avec le « type de médi
Mais lorsque le formulaire inclut des fichiers, il est encodé en `multipart/form-data`. Si vous utilisez `File`, **FastAPI** saura qu'il doit récupérer les fichiers depuis la partie appropriée du corps.
-Si vous souhaitez en savoir plus sur ces encodages et les champs de formulaire, consultez la
MDN Web Docs pour POST.
+Si vous souhaitez en savoir plus sur ces encodages et les champs de formulaire, consultez la [
MDN Web Docs pour `POST`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST).
///
diff --git a/docs/fr/docs/tutorial/request-form-models.md b/docs/fr/docs/tutorial/request-form-models.md
index 3fbac9c74..0f1e6dcfd 100644
--- a/docs/fr/docs/tutorial/request-form-models.md
+++ b/docs/fr/docs/tutorial/request-form-models.md
@@ -4,9 +4,9 @@ Vous pouvez utiliser des **modèles Pydantic** pour déclarer des **champs de fo
/// info
-Pour utiliser les formulaires, installez d'abord
`python-multipart`.
+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){.internal-link target=_blank}, de l'activer, puis d'installer le paquet, par exemple :
+Assurez-vous de créer un [environnement virtuel](../virtual-environments.md), de l'activer, puis d'installer le paquet, par exemple :
```console
$ pip install 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 6774eec8e..2e3f5b58b 100644
--- a/docs/fr/docs/tutorial/request-forms-and-files.md
+++ b/docs/fr/docs/tutorial/request-forms-and-files.md
@@ -4,9 +4,9 @@ Vous pouvez définir des fichiers et des champs de formulaire en même temps à
/// info
-Pour recevoir des fichiers téléversés et/ou des données de formulaire, installez d'abord
`python-multipart`.
+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).
-Vous devez créer un [environnement virtuel](../virtual-environments.md){.internal-link target=_blank}, l'activer, puis installer ce paquet, par exemple :
+Vous devez créer un [environnement virtuel](../virtual-environments.md), l'activer, puis installer ce paquet, par exemple :
```console
$ pip install python-multipart
diff --git a/docs/fr/docs/tutorial/request-forms.md b/docs/fr/docs/tutorial/request-forms.md
index cea47c93e..9596f68ce 100644
--- a/docs/fr/docs/tutorial/request-forms.md
+++ b/docs/fr/docs/tutorial/request-forms.md
@@ -4,9 +4,9 @@ Lorsque vous devez recevoir des champs de formulaire au lieu de JSON, vous pouve
/// info
-Pour utiliser les formulaires, installez d'abord
`python-multipart`.
+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){.internal-link target=_blank}, de l'activer, puis d'installer ce paquet, par exemple :
+Assurez-vous de créer un [environnement virtuel](../virtual-environments.md), de l'activer, puis installez-le, par exemple :
```console
$ pip install python-multipart
@@ -56,7 +56,7 @@ Les données issues des formulaires sont normalement encodées avec le « type d
Mais lorsque le formulaire inclut des fichiers, il est encodé en `multipart/form-data`. Vous lirez la gestion des fichiers dans le chapitre suivant.
-Si vous voulez en savoir plus sur ces encodages et les champs de formulaire, consultez la
MDN web docs pour POST.
+Si vous voulez en savoir plus sur ces encodages et les champs de formulaire, consultez la [
MDN web docs pour `POST`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST).
///
diff --git a/docs/fr/docs/tutorial/response-model.md b/docs/fr/docs/tutorial/response-model.md
index 337b1aa48..e3926a0c1 100644
--- a/docs/fr/docs/tutorial/response-model.md
+++ b/docs/fr/docs/tutorial/response-model.md
@@ -13,6 +13,7 @@ FastAPI utilisera ce type de retour pour :
* Ajouter un **JSON Schema** pour la réponse, dans l’OpenAPI du *chemin d'accès*.
* Ceci sera utilisé par la **documentation automatique**.
* Ceci sera également utilisé par les outils de génération automatique de code client.
+* **Sérialiser** les données renvoyées en JSON en utilisant Pydantic, qui est écrit en **Rust**, ce qui sera **beaucoup plus rapide**.
Mais surtout :
@@ -73,9 +74,9 @@ Ici, nous déclarons un modèle `UserIn`, il contiendra un mot de passe en clair
/// info | Info
-Pour utiliser `EmailStr`, installez d'abord
`email-validator`.
+Pour utiliser `EmailStr`, installez d'abord [`email-validator`](https://github.com/JoshData/python-email-validator).
-Assurez-vous de créer un [environnement virtuel](../virtual-environments.md){.internal-link target=_blank}, de l'activer, puis de l'installer, par exemple :
+Assurez-vous de créer un [environnement virtuel](../virtual-environments.md), de l'activer, puis de l'installer, par exemple :
```console
$ pip install email-validator
@@ -181,7 +182,7 @@ Il peut y avoir des cas où vous renvoyez quelque chose qui n'est pas un champ P
### Renvoyer directement une Response { #return-a-response-directly }
-Le cas le plus courant serait [de renvoyer directement une Response comme expliqué plus loin dans la documentation avancée](../advanced/response-directly.md){.internal-link target=_blank}.
+Le cas le plus courant serait [de renvoyer directement une Response comme expliqué plus loin dans la documentation avancée](../advanced/response-directly.md).
{* ../../docs_src/response_model/tutorial003_02_py310.py hl[8,10:11] *}
@@ -257,7 +258,7 @@ Vous pouvez également utiliser :
* `response_model_exclude_defaults=True`
* `response_model_exclude_none=True`
-comme décrit dans
la documentation Pydantic pour `exclude_defaults` et `exclude_none`.
+comme décrit dans [la documentation Pydantic](https://docs.pydantic.dev/1.10/usage/exporting_models/#modeldict) pour `exclude_defaults` et `exclude_none`.
///
diff --git a/docs/fr/docs/tutorial/response-status-code.md b/docs/fr/docs/tutorial/response-status-code.md
index 388a53b3d..c8e45cd40 100644
--- a/docs/fr/docs/tutorial/response-status-code.md
+++ b/docs/fr/docs/tutorial/response-status-code.md
@@ -20,7 +20,7 @@ Le paramètre `status_code` reçoit un nombre correspondant au code d'état HTTP
/// info
-`status_code` peut aussi recevoir un `IntEnum`, comme le
`http.HTTPStatus` de Python.
+`status_code` peut aussi recevoir un `IntEnum`, comme le [`http.HTTPStatus`](https://docs.python.org/3/library/http.html#http.HTTPStatus) de Python.
///
@@ -66,7 +66,7 @@ En bref :
/// tip | Astuce
-Pour en savoir plus sur chaque code d'état et à quoi il correspond, consultez la
MDN documentation about HTTP status codes.
+Pour en savoir plus sur chaque code d'état et à quoi il correspond, consultez la [
MDN documentation sur les codes d'état HTTP](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status).
///
@@ -92,10 +92,10 @@ Elles ne sont qu'une commodité, elles contiennent le même nombre, mais de cett
Vous pourriez aussi utiliser `from starlette import status`.
-FastAPI fournit le même `starlette.status` que `fastapi.status`, uniquement pour votre commodité de développeur. Mais cela vient directement de Starlette.
+**FastAPI** fournit le même `starlette.status` que `fastapi.status`, uniquement pour votre commodité de développeur. Mais cela vient directement de Starlette.
///
## Modifier la valeur par défaut { #changing-the-default }
-Plus tard, dans le [Guide utilisateur avancé](../advanced/response-change-status-code.md){.internal-link target=_blank}, vous verrez comment renvoyer un code d'état différent de celui par défaut que vous déclarez ici.
+Plus tard, dans le [Guide utilisateur avancé](../advanced/response-change-status-code.md), vous verrez comment renvoyer un code d'état différent de celui par défaut que vous déclarez ici.
diff --git a/docs/fr/docs/tutorial/schema-extra-example.md b/docs/fr/docs/tutorial/schema-extra-example.md
index d4403c779..404edff46 100644
--- a/docs/fr/docs/tutorial/schema-extra-example.md
+++ b/docs/fr/docs/tutorial/schema-extra-example.md
@@ -12,7 +12,7 @@ Vous pouvez déclarer `examples` pour un modèle Pydantic qui seront ajoutés au
Ces informations supplémentaires seront ajoutées telles quelles au **JSON Schema** de sortie pour ce modèle, et elles seront utilisées dans la documentation de l'API.
-Vous pouvez utiliser l'attribut `model_config` qui accepte un `dict` comme décrit dans
Documentation de Pydantic : Configuration.
+Vous pouvez utiliser l'attribut `model_config` qui accepte un `dict` comme décrit dans [Documentation de Pydantic : Configuration](https://docs.pydantic.dev/latest/api/config/).
Vous pouvez définir `"json_schema_extra"` avec un `dict` contenant toutes les données supplémentaires que vous souhaitez voir apparaître dans le JSON Schema généré, y compris `examples`.
@@ -145,12 +145,12 @@ JSON Schema n'avait pas `examples`, donc OpenAPI a ajouté son propre champ `exa
OpenAPI a également ajouté les champs `example` et `examples` à d'autres parties de la spécification :
-*
`Parameter Object` (dans la spécification) qui était utilisé par les éléments FastAPI :
+* [`Parameter Object` (dans la spécification)](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#parameter-object) qui était utilisé par les éléments FastAPI :
* `Path()`
* `Query()`
* `Header()`
* `Cookie()`
-*
`Request Body Object`, dans le champ `content`, sur le `Media Type Object` (dans la spécification) qui était utilisé par les éléments FastAPI :
+* [`Request Body Object`, dans le champ `content`, sur le `Media Type Object` (dans la spécification)](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object) qui était utilisé par les éléments FastAPI :
* `Body()`
* `File()`
* `Form()`
@@ -163,7 +163,7 @@ Ce paramètre `examples` ancien et spécifique à OpenAPI est désormais `openap
### Le champ `examples` de JSON Schema { #json-schemas-examples-field }
-Ensuite, JSON Schema a ajouté un champ
`examples` dans une nouvelle version de la spécification.
+Ensuite, JSON Schema a ajouté un champ [`examples`](https://json-schema.org/draft/2019-09/json-schema-validation.html#rfc.section.9.5) dans une nouvelle version de la spécification.
Puis le nouveau OpenAPI 3.1.0 s'est basé sur la dernière version (JSON Schema 2020-12) qui incluait ce nouveau champ `examples`.
diff --git a/docs/fr/docs/tutorial/security/first-steps.md b/docs/fr/docs/tutorial/security/first-steps.md
index 8c4eb50d7..c1d36d501 100644
--- a/docs/fr/docs/tutorial/security/first-steps.md
+++ b/docs/fr/docs/tutorial/security/first-steps.md
@@ -26,11 +26,11 @@ Copiez l'exemple dans un fichier `main.py` :
/// info
-Le package
`python-multipart` est installé automatiquement avec **FastAPI** lorsque vous exécutez la commande `pip install "fastapi[standard]"`.
+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]"`.
Cependant, si vous utilisez la commande `pip install fastapi`, le package `python-multipart` n'est pas inclus par défaut.
-Pour l'installer manuellement, vous devez vous assurer de créer un [environnement virtuel](../../virtual-environments.md){.internal-link target=_blank}, de l'activer, puis de l'installer avec :
+Pour l'installer manuellement, vous devez vous assurer de créer un [environnement virtuel](../../virtual-environments.md), de l'activer, puis de l'installer avec :
```console
$ pip install python-multipart
@@ -45,7 +45,7 @@ Exécutez l'exemple avec :
```console
-$ fastapi dev main.py
+$ fastapi dev
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
```
@@ -54,7 +54,7 @@ $ fastapi dev main.py
## Vérifier { #check-it }
-Allez à la documentation interactive à l'adresse :
http://127.0.0.1:8000/docs.
+Allez à la documentation interactive à l'adresse : [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs).
Vous verrez quelque chose comme ceci :
@@ -140,7 +140,7 @@ Ici `tokenUrl="token"` fait référence à une URL relative `token` que nous n'a
Parce que nous utilisons une URL relative, si votre API se trouvait à `https://example.com/`, alors elle ferait référence à `https://example.com/token`. Mais si votre API se trouvait à `https://example.com/api/v1/`, alors elle ferait référence à `https://example.com/api/v1/token`.
-Utiliser une URL relative est important pour vous assurer que votre application continue de fonctionner même dans un cas d'usage avancé comme [Derrière un proxy](../../advanced/behind-a-proxy.md){.internal-link target=_blank}.
+Utiliser une URL relative est important pour vous assurer que votre application continue de fonctionner même dans un cas d'usage avancé comme [Derrière un proxy](../../advanced/behind-a-proxy.md).
///
diff --git a/docs/fr/docs/tutorial/security/oauth2-jwt.md b/docs/fr/docs/tutorial/security/oauth2-jwt.md
index d35530fc9..eec5ab13c 100644
--- a/docs/fr/docs/tutorial/security/oauth2-jwt.md
+++ b/docs/fr/docs/tutorial/security/oauth2-jwt.md
@@ -24,13 +24,13 @@ De cette façon, vous pouvez créer un jeton avec une expiration d'une semaine,
Après une semaine, le jeton aura expiré et l'utilisateur ne sera pas autorisé et devra se reconnecter pour obtenir un nouveau jeton. Et si l'utilisateur (ou un tiers) essayait de modifier le jeton pour changer l'expiration, vous pourriez le détecter, car les signatures ne correspondraient pas.
-Si vous voulez expérimenter avec des jetons JWT et voir comment ils fonctionnent, consultez
https://jwt.io.
+Si vous voulez expérimenter avec des jetons JWT et voir comment ils fonctionnent, consultez [https://jwt.io](https://jwt.io/).
## Installer `PyJWT` { #install-pyjwt }
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){.internal-link target=_blank}, de l'activer, puis d'installer `pyjwt` :
+Assurez-vous de créer un [environnement virtuel](../../virtual-environments.md), de l'activer, puis d'installer `pyjwt` :
@@ -46,7 +46,7 @@ $ pip install pyjwt
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]`.
-Vous pouvez en lire davantage dans la
documentation d'installation de PyJWT.
+Vous pouvez en lire davantage dans la [documentation d'installation de PyJWT](https://pyjwt.readthedocs.io/en/latest/installation.html).
///
@@ -58,7 +58,7 @@ Chaque fois que vous fournissez exactement le même contenu (exactement le même
Mais vous ne pouvez pas convertir le charabia en sens inverse vers le mot de passe.
-### Pourquoi utiliser le hachage de mot de passe { #why-use-password-hashing }
+### Pourquoi utiliser le hachage de mot passe { #why-use-password-hashing }
Si votre base de données est volée, le voleur n'aura pas les mots de passe en clair de vos utilisateurs, seulement les hachages.
@@ -72,7 +72,7 @@ Il prend en charge de nombreux algorithmes de hachage sécurisés et des utilita
L'algorithme recommandé est « Argon2 ».
-Assurez-vous de créer un [environnement virtuel](../../virtual-environments.md){.internal-link target=_blank}, de l'activer, puis d'installer pwdlib avec Argon2 :
+Assurez-vous de créer un [environnement virtuel](../../virtual-environments.md), de l'activer, puis d'installer pwdlib avec Argon2 :
@@ -200,7 +200,7 @@ L'important à garder à l'esprit est que la clé `sub` doit contenir un identif
## Vérifier { #check-it }
-Lancez le serveur et allez à la documentation :
http://127.0.0.1:8000/docs.
+Lancez le serveur et allez à la documentation : [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs).
Vous verrez l'interface utilisateur suivante :
diff --git a/docs/fr/docs/tutorial/security/simple-oauth2.md b/docs/fr/docs/tutorial/security/simple-oauth2.md
index 662444753..f47d94aa2 100644
--- a/docs/fr/docs/tutorial/security/simple-oauth2.md
+++ b/docs/fr/docs/tutorial/security/simple-oauth2.md
@@ -4,7 +4,7 @@ Construisons maintenant à partir du chapitre précédent et ajoutons les élém
## Obtenir `username` et `password` { #get-the-username-and-password }
-Nous allons utiliser les utilitaires de sécurité de **FastAPI** pour obtenir `username` et `password`.
+Nous allons utiliser les utilités de sécurité de **FastAPI** pour obtenir `username` et `password`.
OAuth2 spécifie que lorsqu'on utilise le « password flow » (ce que nous utilisons), le client/utilisateur doit envoyer des champs `username` et `password` en tant que données de formulaire.
@@ -46,7 +46,7 @@ Pour OAuth2, ce ne sont que des chaînes.
## Écrire le code pour obtenir `username` et `password` { #code-to-get-the-username-and-password }
-Utilisons maintenant les utilitaires fournis par **FastAPI** pour gérer cela.
+Utilisons maintenant les utilités fournies par **FastAPI** pour gérer cela.
### `OAuth2PasswordRequestForm` { #oauth2passwordrequestform }
@@ -146,7 +146,7 @@ UserInDB(
/// info
-Pour une explication plus complète de `**user_dict`, consultez [la documentation pour **Modèles supplémentaires**](../extra-models.md#about-user-in-dict){.internal-link target=_blank}.
+Pour une explication plus complète de `**user_dict`, consultez [la documentation pour **Modèles supplémentaires**](../extra-models.md#about-user-in-dict).
///
@@ -216,7 +216,7 @@ C'est l'avantage des standards ...
## Voir en action { #see-it-in-action }
-Ouvrez la documentation interactive :
http://127.0.0.1:8000/docs.
+Ouvrez la documentation interactive : [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs).
### S'authentifier { #authenticate }
diff --git a/docs/fr/docs/tutorial/sql-databases.md b/docs/fr/docs/tutorial/sql-databases.md
index 75f9ae14f..70e5b1dba 100644
--- a/docs/fr/docs/tutorial/sql-databases.md
+++ b/docs/fr/docs/tutorial/sql-databases.md
@@ -2,9 +2,9 @@
**FastAPI** ne vous oblige pas à utiliser une base de données SQL (relationnelle). Mais vous pouvez utiliser **n'importe quelle base de données** que vous voulez.
-Ici, nous allons voir un exemple utilisant
SQLModel.
+Ici, nous allons voir un exemple utilisant [SQLModel](https://sqlmodel.tiangolo.com/).
-**SQLModel** est construit au-dessus de
SQLAlchemy et de Pydantic. Il a été créé par le même auteur que **FastAPI** pour être l'accord parfait pour les applications FastAPI qui ont besoin d'utiliser des **bases de données SQL**.
+**SQLModel** est construit au-dessus de [SQLAlchemy](https://www.sqlalchemy.org/) et de Pydantic. Il a été créé par le même auteur que **FastAPI** pour être l'accord parfait pour les applications FastAPI qui ont besoin d'utiliser des **bases de données SQL**.
/// tip | Astuce
@@ -26,15 +26,15 @@ Plus tard, pour votre application de production, vous voudrez peut-être utilise
/// tip | Astuce
-Il existe un générateur de projet officiel avec **FastAPI** et **PostgreSQL**, incluant un frontend et plus d'outils :
https://github.com/fastapi/full-stack-fastapi-template
+Il existe un générateur de projet officiel avec **FastAPI** et **PostgreSQL**, incluant un frontend et plus d'outils : [https://github.com/fastapi/full-stack-fastapi-template](https://github.com/fastapi/full-stack-fastapi-template)
///
-Il s'agit d'un tutoriel très simple et court ; si vous souhaitez apprendre sur les bases de données en général, sur SQL, ou des fonctionnalités plus avancées, allez voir la
documentation SQLModel.
+Il s'agit d'un tutoriel très simple et court ; si vous souhaitez apprendre sur les bases de données en général, sur SQL, ou des fonctionnalités plus avancées, allez voir la [documentation SQLModel](https://sqlmodel.tiangolo.com/).
## Installer `SQLModel` { #install-sqlmodel }
-D'abord, assurez-vous de créer votre [environnement virtuel](../virtual-environments.md){.internal-link target=_blank}, de l'activer, puis d'installer `sqlmodel` :
+D'abord, assurez-vous de créer votre [environnement virtuel](../virtual-environments.md), de l'activer, puis d'installer `sqlmodel` :
@@ -65,7 +65,7 @@ Il y a quelques différences :
* `Field(primary_key=True)` indique à SQLModel que `id` est la **clé primaire** dans la base SQL (vous pouvez en savoir plus sur les clés primaires SQL dans la documentation SQLModel).
- Remarque : nous utilisons `int | None` pour le champ clé primaire afin qu'en Python nous puissions *créer un objet sans `id`* (`id=None`), en supposant que la base *le génère à l'enregistrement*. SQLModel comprend que la base fournira l'`id` et *définit la colonne comme un `INTEGER` non nul* dans le schéma de base. Voir la
documentation SQLModel sur les clés primaires pour plus de détails.
+ Remarque : nous utilisons `int | None` pour le champ clé primaire afin qu'en Python nous puissions *créer un objet sans `id`* (`id=None`), en supposant que la base *le génère à l'enregistrement*. SQLModel comprend que la base fournira l'`id` et *définit la colonne comme un `INTEGER` non nul* dans le schéma de base. Voir la [documentation SQLModel sur les clés primaires](https://sqlmodel.tiangolo.com/tutorial/create-db-and-table/#primary-key-id) pour plus de détails.
* `Field(index=True)` indique à SQLModel qu'il doit créer un **index SQL** pour cette colonne, ce qui permettra des recherches plus rapides dans la base lors de la lecture de données filtrées par cette colonne.
@@ -111,7 +111,7 @@ En production, vous utiliseriez probablement un script de migration qui s'exécu
/// tip | Astuce
-SQLModel aura des utilitaires de migration enveloppant Alembic, mais pour l'instant, vous pouvez utiliser
Alembic directement.
+SQLModel aura des utilitaires de migration enveloppant Alembic, mais pour l'instant, vous pouvez utiliser [Alembic](https://alembic.sqlalchemy.org/en/latest/) directement.
///
@@ -152,7 +152,7 @@ Vous pouvez exécuter l'application :
```console
-$ fastapi dev main.py
+$ fastapi dev
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
```
@@ -337,7 +337,7 @@ Vous pouvez exécuter l'application à nouveau :
```console
-$ fastapi dev main.py
+$ fastapi dev
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
```
@@ -352,6 +352,6 @@ Si vous allez sur l'UI `/docs` de l'API, vous verrez qu'elle est maintenant à j
## Récapitulatif { #recap }
-Vous pouvez utiliser
**SQLModel** pour interagir avec une base SQL et simplifier le code avec des *modèles de données* et des *modèles de table*.
+Vous pouvez utiliser [**SQLModel**](https://sqlmodel.tiangolo.com/) pour interagir avec une base SQL et simplifier le code avec des *modèles de données* et des *modèles de table*.
-Vous pouvez en apprendre beaucoup plus dans la documentation **SQLModel**, il y a un mini
tutoriel plus long sur l'utilisation de SQLModel avec **FastAPI**. 🚀
+Vous pouvez en apprendre beaucoup plus dans la documentation **SQLModel**, il y a un mini [tutoriel plus long sur l'utilisation de SQLModel avec **FastAPI**](https://sqlmodel.tiangolo.com/tutorial/fastapi/). 🚀
diff --git a/docs/fr/docs/tutorial/static-files.md b/docs/fr/docs/tutorial/static-files.md
index 3928fed9b..6a54840af 100644
--- a/docs/fr/docs/tutorial/static-files.md
+++ b/docs/fr/docs/tutorial/static-files.md
@@ -23,7 +23,7 @@ Vous pouvez également utiliser `from starlette.staticfiles import StaticFiles`.
Cela diffère de l'utilisation d'un `APIRouter`, car une application montée est complètement indépendante. L'OpenAPI et les documents de votre application principale n'incluront rien provenant de l'application montée, etc.
-Vous pouvez en lire davantage à ce sujet dans le [Guide utilisateur avancé](../advanced/index.md){.internal-link target=_blank}.
+Vous pouvez en lire davantage à ce sujet dans le [Guide utilisateur avancé](../advanced/index.md).
## Détails { #details }
@@ -37,4 +37,4 @@ Tous ces paramètres peuvent être différents de « `static` », adaptez-les au
## Plus d'informations { #more-info }
-Pour plus de détails et d'options, consultez la
documentation de Starlette sur les fichiers statiques.
+Pour plus de détails et d'options, consultez la [documentation de Starlette sur les fichiers statiques](https://www.starlette.dev/staticfiles/).
diff --git a/docs/fr/docs/tutorial/testing.md b/docs/fr/docs/tutorial/testing.md
index 8a609b644..5cb2ee629 100644
--- a/docs/fr/docs/tutorial/testing.md
+++ b/docs/fr/docs/tutorial/testing.md
@@ -1,18 +1,18 @@
# Tester { #testing }
-Grâce à
Starlette, tester des applications **FastAPI** est simple et agréable.
+Grâce à [Starlette](https://www.starlette.dev/testclient/), tester des applications **FastAPI** est simple et agréable.
-C’est basé sur
HTTPX, dont la conception s’inspire de Requests, ce qui le rend très familier et intuitif.
+C’est basé sur [HTTPX](https://www.python-httpx.org), dont la conception s’inspire de Requests, ce qui le rend très familier et intuitif.
-Avec cela, vous pouvez utiliser
pytest directement avec **FastAPI**.
+Avec cela, vous pouvez utiliser [pytest](https://docs.pytest.org/) directement avec **FastAPI**.
## Utiliser `TestClient` { #using-testclient }
/// info
-Pour utiliser `TestClient`, installez d’abord
`httpx`.
+Pour utiliser `TestClient`, installez d’abord [`httpx`](https://www.python-httpx.org).
-Vous devez créer un [environnement virtuel](../virtual-environments.md){.internal-link target=_blank}, l’activer, puis y installer le paquet, par exemple :
+Vous devez créer un [environnement virtuel](../virtual-environments.md), l’activer, puis y installer le paquet, par exemple :
```console
$ pip install httpx
@@ -52,7 +52,7 @@ Vous pouvez aussi utiliser `from starlette.testclient import TestClient`.
/// tip | Astuce
-Si vous souhaitez appeler des fonctions `async` dans vos tests en dehors de l’envoi de requêtes à votre application FastAPI (par exemple des fonctions de base de données asynchrones), consultez les [Tests asynchrones](../advanced/async-tests.md){.internal-link target=_blank} dans le tutoriel avancé.
+Si vous souhaitez appeler des fonctions `async` dans vos tests en dehors de l’envoi de requêtes à votre application FastAPI (par exemple des fonctions de base de données asynchrones), consultez les [Tests asynchrones](../advanced/async-tests.md) dans le tutoriel avancé.
///
@@ -64,7 +64,7 @@ Et votre application **FastAPI** pourrait aussi être composée de plusieurs fic
### Fichier d’application **FastAPI** { #fastapi-app-file }
-Supposons que vous ayez une structure de fichiers comme décrit dans [Applications plus grandes](bigger-applications.md){.internal-link target=_blank} :
+Supposons que vous ayez une structure de fichiers comme décrit dans [Applications plus grandes](bigger-applications.md) :
```
.
@@ -142,13 +142,13 @@ Par exemple :
* Pour passer des en-têtes, utilisez un `dict` dans le paramètre `headers`.
* Pour les cookies, un `dict` dans le paramètre `cookies`.
-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.
+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
Notez que le `TestClient` reçoit des données qui peuvent être converties en JSON, pas des modèles Pydantic.
-Si vous avez un modèle Pydantic dans votre test et que vous souhaitez envoyer ses données à l’application pendant les tests, vous pouvez utiliser le `jsonable_encoder` décrit dans [Encodeur compatible JSON](encoder.md){.internal-link target=_blank}.
+Si vous avez un modèle Pydantic dans votre test et que vous souhaitez envoyer ses données à l’application pendant les tests, vous pouvez utiliser le `jsonable_encoder` décrit dans [Encodeur compatible JSON](encoder.md).
///
@@ -156,7 +156,7 @@ Si vous avez un modèle Pydantic dans votre test et que vous souhaitez envoyer s
Après cela, vous avez simplement besoin d’installer `pytest`.
-Vous devez créer un [environnement virtuel](../virtual-environments.md){.internal-link target=_blank}, l’activer, puis y installer le paquet, par exemple :
+Vous devez créer un [environnement virtuel](../virtual-environments.md), l’activer, puis y installer le paquet, par exemple :
diff --git a/docs/fr/docs/virtual-environments.md b/docs/fr/docs/virtual-environments.md
index 86b5faadc..4793e5dac 100644
--- a/docs/fr/docs/virtual-environments.md
+++ b/docs/fr/docs/virtual-environments.md
@@ -22,7 +22,7 @@ Un environnement virtuel est un répertoire contenant certains fichiers.
Cette page vous apprendra à utiliser les environnements virtuels et à comprendre leur fonctionnement.
-Si vous êtes prêt à adopter un outil qui gère tout pour vous (y compris l’installation de Python), essayez
uv.
+Si vous êtes prêt à adopter un outil qui gère tout pour vous (y compris l’installation de Python), essayez [uv](https://github.com/astral-sh/uv).
///
@@ -86,7 +86,7 @@ $ python -m venv .venv
//// tab | `uv`
-Si vous avez installé
`uv`, vous pouvez l’utiliser pour créer un environnement virtuel.
+Si vous avez installé [`uv`](https://github.com/astral-sh/uv), vous pouvez l’utiliser pour créer un environnement virtuel.
@@ -150,7 +150,7 @@ $ .venv\Scripts\Activate.ps1
//// tab | Windows Bash
-Ou si vous utilisez Bash pour Windows (par exemple
Git Bash) :
+Ou si vous utilisez Bash pour Windows (par exemple [Git Bash](https://gitforwindows.org/)) :
@@ -216,7 +216,7 @@ S’il affiche le binaire `python` à `.venv\Scripts\python`, dans votre projet
/// tip | Astuce
-Si vous utilisez
`uv`, vous l’utiliserez pour installer des éléments à la place de `pip`, vous n’avez donc pas besoin de mettre `pip` à niveau. 😎
+Si vous utilisez [`uv`](https://github.com/astral-sh/uv), vous l’utiliserez pour installer des éléments à la place de `pip`, vous n’avez donc pas besoin de mettre `pip` à niveau. 😎
///
@@ -268,7 +268,7 @@ Si vous utilisez Git (vous devriez), ajoutez un fichier `.gitignore` pour exclur
/// tip | Astuce
-Si vous avez utilisé
`uv` pour créer l’environnement virtuel, il l’a déjà fait pour vous, vous pouvez passer cette étape. 😎
+Si vous avez utilisé [`uv`](https://github.com/astral-sh/uv) pour créer l’environnement virtuel, il l’a déjà fait pour vous, vous pouvez passer cette étape. 😎
///
@@ -340,7 +340,7 @@ $ pip install "fastapi[standard]"
//// tab | `uv`
-Si vous avez
`uv` :
+Si vous avez [`uv`](https://github.com/astral-sh/uv) :
@@ -372,7 +372,7 @@ $ pip install -r requirements.txt
//// tab | `uv`
-Si vous avez
`uv` :
+Si vous avez [`uv`](https://github.com/astral-sh/uv) :
@@ -416,8 +416,8 @@ Vous utiliserez probablement un éditeur, assurez-vous de le configurer pour uti
Par exemple :
-*
VS Code
-*
PyCharm
+* [VS Code](https://code.visualstudio.com/docs/python/environments#_select-and-activate-an-environment)
+* [PyCharm](https://www.jetbrains.com/help/pycharm/creating-virtual-environment.html)
/// tip | Astuce
@@ -455,7 +455,7 @@ Continuez la lecture. 👇🤓
## Pourquoi des environnements virtuels { #why-virtual-environments }
-Pour travailler avec FastAPI, vous devez installer
Python.
+Pour travailler avec FastAPI, vous devez installer [Python](https://www.python.org/).
Ensuite, vous devrez installer FastAPI et tout autre package que vous souhaitez utiliser.
@@ -564,7 +564,7 @@ $ pip install "fastapi[standard]"
-Cela téléchargera un fichier compressé avec le code de FastAPI, normalement depuis
PyPI.
+Cela téléchargera un fichier compressé avec le code de FastAPI, normalement depuis [PyPI](https://pypi.org/project/fastapi/).
Il téléchargera également des fichiers pour d’autres packages dont FastAPI dépend.
@@ -627,7 +627,7 @@ $ .venv\Scripts\Activate.ps1
//// tab | Windows Bash
-Ou si vous utilisez Bash pour Windows (par exemple
Git Bash) :
+Ou si vous utilisez Bash pour Windows (par exemple [Git Bash](https://gitforwindows.org/)) :
@@ -639,13 +639,13 @@ $ source .venv/Scripts/activate
////
-Cette commande créera ou modifiera certaines [variables d’environnement](environment-variables.md){.internal-link target=_blank} qui seront disponibles pour les prochaines commandes.
+Cette commande créera ou modifiera certaines [variables d’environnement](environment-variables.md) qui seront disponibles pour les prochaines commandes.
L’une de ces variables est la variable `PATH`.
/// tip | Astuce
-Vous pouvez en savoir plus sur la variable d’environnement `PATH` dans la section [Variables d’environnement](environment-variables.md#path-environment-variable){.internal-link target=_blank}.
+Vous pouvez en savoir plus sur la variable d’environnement `PATH` dans la section [Variables d’environnement](environment-variables.md#path-environment-variable).
///
@@ -846,7 +846,7 @@ Ceci est un guide simple pour vous lancer et vous montrer comment tout fonctionn
Il existe de nombreuses alternatives pour gérer les environnements virtuels, les dépendances de packages (requirements), les projets.
-Lorsque vous êtes prêt et souhaitez utiliser un outil pour gérer l’ensemble du projet, les dépendances, les environnements virtuels, etc., je vous suggère d’essayer
uv.
+Lorsque vous êtes prêt et souhaitez utiliser un outil pour gérer l’ensemble du projet, les dépendances, les environnements virtuels, etc., je vous suggère d’essayer [uv](https://github.com/astral-sh/uv).
`uv` peut faire beaucoup de choses, il peut :