Files
fastapi/docs/fr/docs/tutorial/first-steps.md
Sebastián Ramírez 6ff8ff5b57 🌐 Update translations for fr (update-outdated) (#14826)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-05 16:34:19 +01:00

381 lines
14 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Démarrage { #first-steps }
Le fichier **FastAPI** le plus simple possible pourrait ressembler à ceci :
{* ../../docs_src/first_steps/tutorial001_py39.py *}
Copiez cela dans un fichier `main.py`.
Démarrez le serveur en direct :
<div class="termy">
```console
$ <font color="#4E9A06">fastapi</font> dev <u style="text-decoration-style:solid">main.py</u>
<span style="background-color:#009485"><font color="#D3D7CF"> FastAPI </font></span> Starting development server 🚀
Searching for package file structure from directories
with <font color="#3465A4">__init__.py</font> files
Importing from <font color="#75507B">/home/user/code/</font><font color="#AD7FA8">awesomeapp</font>
<span style="background-color:#007166"><font color="#D3D7CF"> module </font></span> 🐍 main.py
<span style="background-color:#007166"><font color="#D3D7CF"> code </font></span> Importing the FastAPI app object from the module with
the following code:
<u style="text-decoration-style:solid">from </u><u style="text-decoration-style:solid"><b>main</b></u><u style="text-decoration-style:solid"> import </u><u style="text-decoration-style:solid"><b>app</b></u>
<span style="background-color:#007166"><font color="#D3D7CF"> app </font></span> Using import string: <font color="#3465A4">main:app</font>
<span style="background-color:#007166"><font color="#D3D7CF"> server </font></span> Server started at <font color="#729FCF"><u style="text-decoration-style:solid">http://127.0.0.1:8000</u></font>
<span style="background-color:#007166"><font color="#D3D7CF"> server </font></span> Documentation at <font color="#729FCF"><u style="text-decoration-style:solid">http://127.0.0.1:8000/docs</u></font>
<span style="background-color:#007166"><font color="#D3D7CF"> tip </font></span> Running in development mode, for production use:
<b>fastapi run</b>
Logs:
<span style="background-color:#007166"><font color="#D3D7CF"> INFO </font></span> Will watch for changes in these directories:
<b>[</b><font color="#4E9A06">&apos;/home/user/code/awesomeapp&apos;</font><b>]</b>
<span style="background-color:#007166"><font color="#D3D7CF"> INFO </font></span> Uvicorn running on <font color="#729FCF"><u style="text-decoration-style:solid">http://127.0.0.1:8000</u></font> <b>(</b>Press CTRL+C
to quit<b>)</b>
<span style="background-color:#007166"><font color="#D3D7CF"> INFO </font></span> Started reloader process <b>[</b><font color="#34E2E2"><b>383138</b></font><b>]</b> using WatchFiles
<span style="background-color:#007166"><font color="#D3D7CF"> INFO </font></span> Started server process <b>[</b><font color="#34E2E2"><b>383153</b></font><b>]</b>
<span style="background-color:#007166"><font color="#D3D7CF"> INFO </font></span> Waiting for application startup.
<span style="background-color:#007166"><font color="#D3D7CF"> INFO </font></span> Application startup complete.
```
</div>
Dans la sortie, il y a une ligne semblable à :
```hl_lines="4"
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
```
Cette ligne montre lURL où votre application est servie, sur votre machine locale.
### Vérifiez { #check-it }
Ouvrez votre navigateur à ladresse <a href="http://127.0.0.1:8000" class="external-link" target="_blank">http://127.0.0.1:8000</a>.
Vous verrez la réponse JSON suivante :
```JSON
{"message": "Hello World"}
```
### Documentation interactive de lAPI { #interactive-api-docs }
Allez maintenant sur <a href="http://127.0.0.1:8000/docs" class="external-link" target="_blank">http://127.0.0.1:8000/docs</a>.
Vous verrez la documentation interactive de lAPI générée automatiquement (fournie par <a href="https://github.com/swagger-api/swagger-ui" class="external-link" target="_blank">Swagger UI</a>) :
![Swagger UI](https://fastapi.tiangolo.com/img/index/index-01-swagger-ui-simple.png)
### Documentation alternative de lAPI { #alternative-api-docs }
Et maintenant, allez sur <a href="http://127.0.0.1:8000/redoc" class="external-link" target="_blank">http://127.0.0.1:8000/redoc</a>.
Vous verrez la documentation automatique alternative (fournie par <a href="https://github.com/Rebilly/ReDoc" class="external-link" target="_blank">ReDoc</a>) :
![ReDoc](https://fastapi.tiangolo.com/img/index/index-02-redoc-simple.png)
### OpenAPI { #openapi }
**FastAPI** génère un « schéma » contenant toute votre API en utilisant le standard **OpenAPI** pour définir des API.
#### « Schéma » { #schema }
Un « schéma » est une définition ou une description de quelque chose. Pas le code qui limplémente, mais uniquement une description abstraite.
#### « Schéma » dAPI { #api-schema }
Ici, <a href="https://github.com/OAI/OpenAPI-Specification" class="external-link" target="_blank">OpenAPI</a> 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 quils prennent, etc.
#### « Schéma » de données { #data-schema }
Le terme « schéma » peut également faire référence à la forme dune donnée, comme un contenu JSON.
Dans ce cas, cela désignerait les attributs JSON, ainsi que leurs types, etc.
#### OpenAPI et JSON Schema { #openapi-and-json-schema }
OpenAPI définit un schéma dAPI pour votre API. Et ce schéma inclut des définitions (ou « schémas ») des données envoyées et reçues par votre API en utilisant **JSON Schema**, le standard pour les schémas de données JSON.
#### Voir le `openapi.json` { #check-the-openapi-json }
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 à ladresse : <a href="http://127.0.0.1:8000/openapi.json" class="external-link" target="_blank">http://127.0.0.1:8000/openapi.json</a>.
Il affichera un JSON commençant par quelque chose comme :
```JSON
{
"openapi": "3.1.0",
"info": {
"title": "FastAPI",
"version": "0.1.0"
},
"paths": {
"/items/": {
"get": {
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
...
```
#### À quoi sert OpenAPI { #what-is-openapi-for }
Le schéma OpenAPI est ce qui alimente les deux systèmes de documentation interactive inclus.
Et il existe des dizaines dalternatives, toutes basées sur OpenAPI. Vous pourriez facilement ajouter nimporte laquelle de ces alternatives à votre application construite avec **FastAPI**.
Vous pourriez également lutiliser pour générer du code automatiquement, pour les clients qui communiquent avec votre API. Par exemple, des applications frontend, mobiles ou IoT.
### Déployer votre application (optionnel) { #deploy-your-app-optional }
Vous pouvez, si vous le souhaitez, déployer votre application FastAPI sur <a href="https://fastapicloud.com" class="external-link" target="_blank">FastAPI Cloud</a>, allez rejoindre la liste dattente si ce nest pas déjà fait. 🚀
Si vous avez déjà un compte **FastAPI Cloud** (nous vous avons invité depuis la liste dattente 😉), vous pouvez déployer votre application avec une seule commande.
Avant de déployer, vous devez vous assurer que vous êtes connecté :
<div class="termy">
```console
$ fastapi login
You are logged in to FastAPI Cloud 🚀
```
</div>
Puis déployez votre application :
<div class="termy">
```console
$ fastapi deploy
Deploying to FastAPI Cloud...
✅ Deployment successful!
🐔 Ready the chicken! Your app is ready at https://myapp.fastapicloud.dev
```
</div>
Cest tout ! Vous pouvez maintenant accéder à votre application à cette URL. ✨
## Récapitulatif, étape par étape { #recap-step-by-step }
### Étape 1 : importer `FastAPI` { #step-1-import-fastapi }
{* ../../docs_src/first_steps/tutorial001_py39.py hl[1] *}
`FastAPI` est une classe Python qui fournit toutes les fonctionnalités nécessaires à votre API.
/// note | Détails techniques
`FastAPI` est une classe qui hérite directement de `Starlette`.
Vous pouvez donc aussi utiliser toutes les fonctionnalités de <a href="https://www.starlette.dev/" class="external-link" target="_blank">Starlette</a> avec `FastAPI`.
///
### Étape 2 : créer une « instance » `FastAPI` { #step-2-create-a-fastapi-instance }
{* ../../docs_src/first_steps/tutorial001_py39.py hl[3] *}
Ici, la variable `app` sera une « instance » de la classe `FastAPI`.
Ce sera le point principal dinteraction pour créer toute votre API.
### Étape 3 : créer un « chemin daccès » { #step-3-create-a-path-operation }
#### Chemin { #path }
« Chemin » fait ici référence à la dernière partie de lURL à partir du premier `/`.
Donc, dans une URL telle que :
```
https://example.com/items/foo
```
... le chemin serait :
```
/items/foo
```
/// info
Un « chemin » est aussi couramment appelé « endpoint » ou « route ».
///
Lors de la création dune API, le « chemin » est la manière principale de séparer les « préoccupations » et les « ressources ».
#### Opération { #operation }
« Opération » fait ici référence à lune des « méthodes » HTTP.
Lune de :
* `POST`
* `GET`
* `PUT`
* `DELETE`
... et les plus exotiques :
* `OPTIONS`
* `HEAD`
* `PATCH`
* `TRACE`
Dans le protocole HTTP, vous pouvez communiquer avec chaque chemin en utilisant une (ou plusieurs) de ces « méthodes ».
---
En construisant des APIs, vous utilisez normalement ces méthodes HTTP spécifiques pour effectuer une action précise.
En général, vous utilisez :
* `POST` : pour créer des données.
* `GET` : pour lire des données.
* `PUT` : pour mettre à jour des données.
* `DELETE` : pour supprimer des données.
Donc, dans OpenAPI, chacune des méthodes HTTP est appelée une « opération ».
Nous allons donc aussi les appeler « opérations ».
#### Définir un « décorateur de chemin daccès » { #define-a-path-operation-decorator }
{* ../../docs_src/first_steps/tutorial001_py39.py hl[6] *}
Le `@app.get("/")` indique à **FastAPI** que la fonction juste en dessous est chargée de gérer les requêtes qui vont vers:
* le chemin `/`
* en utilisant une <abbr title="une méthode HTTP GET"><code>get</code> opération</abbr>
/// info | `@décorateur` Info
Cette syntaxe `@something` en Python est appelée un « décorateur ».
Vous la mettez au-dessus dune fonction. Comme un joli chapeau décoratif (jimagine que cest de là que vient le terme 🤷🏻‍♂).
Un « décorateur » prend la fonction en dessous et fait quelque chose avec.
Dans notre cas, ce décorateur indique à **FastAPI** que la fonction en dessous correspond au **chemin** `/` avec une **opération** `get`.
Cest le « décorateur de chemin daccès ».
///
Vous pouvez aussi utiliser les autres opérations :
* `@app.post()`
* `@app.put()`
* `@app.delete()`
Ainsi que les plus exotiques :
* `@app.options()`
* `@app.head()`
* `@app.patch()`
* `@app.trace()`
/// tip | Astuce
Vous êtes libre dutiliser chaque opération (méthode HTTP) comme vous le souhaitez.
**FastAPI** nimpose aucune signification spécifique.
Les informations ici sont présentées comme des lignes directrices, pas comme une obligation.
Par exemple, lorsque vous utilisez GraphQL, vous effectuez normalement toutes les actions en utilisant uniquement des opérations `POST`.
///
### Étape 4 : définir la **fonction de chemin daccès** { #step-4-define-the-path-operation-function }
Voici notre « fonction de chemin daccès » :
* **chemin** : `/`.
* **opération** : `get`.
* **fonction** : la fonction sous le « décorateur » (sous `@app.get("/")`).
{* ../../docs_src/first_steps/tutorial001_py39.py hl[7] *}
Cest une fonction Python.
Elle sera appelée par **FastAPI** chaque fois quil recevra une requête vers lURL « / » en utilisant une opération `GET`.
Dans ce cas, cest une fonction `async`.
---
Vous pouvez aussi la définir comme une fonction normale au lieu de `async def` :
{* ../../docs_src/first_steps/tutorial003_py39.py hl[7] *}
/// note
Si vous ne connaissez pas la différence, consultez [Asynchrone : « Pressé ? »](../async.md#in-a-hurry){.internal-link target=_blank}.
///
### Étape 5 : retourner le contenu { #step-5-return-the-content }
{* ../../docs_src/first_steps/tutorial001_py39.py hl[8] *}
Vous pouvez retourner un `dict`, une `list`, des valeurs uniques comme `str`, `int`, etc.
Vous pouvez également retourner des modèles Pydantic (vous en verrez plus à ce sujet plus tard).
Il existe de nombreux autres objets et modèles qui seront automatiquement convertis en JSON (y compris des ORM, etc.). Essayez dutiliser vos favoris, il est fort probable quils soient déjà pris en charge.
### Étape 6 : le déployer { #step-6-deploy-it }
Déployez votre application sur **<a href="https://fastapicloud.com" class="external-link" target="_blank">FastAPI Cloud</a>** avec une seule commande : `fastapi deploy`. 🎉
#### À propos de FastAPI Cloud { #about-fastapi-cloud }
**<a href="https://fastapicloud.com" class="external-link" target="_blank">FastAPI Cloud</a>** 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 deffort.
Il apporte la même **expérience développeur** de création dapplications avec FastAPI au **déploiement** dans le cloud. 🎉
FastAPI Cloud est le sponsor principal et le financeur des projets open source *FastAPI and friends*. ✨
#### Déployer sur dautres fournisseurs cloud { #deploy-to-other-cloud-providers }
FastAPI est open source et basé sur des standards. Vous pouvez déployer des applications FastAPI chez nimporte quel fournisseur cloud de votre choix.
Suivez les guides de votre fournisseur cloud pour y déployer des applications FastAPI. 🤓
## Récapitulatif { #recap }
* Importez `FastAPI`.
* Créez une instance `app`.
* Écrivez un **décorateur de chemin daccès** avec des décorateurs comme `@app.get("/")`.
* Définissez une **fonction de chemin daccès** ; par exemple, `def root(): ...`.
* Exécutez le serveur de développement avec la commande `fastapi dev`.
* Déployez éventuellement votre application avec `fastapi deploy`.