DĂ©marrer¶
đ Traduction par IA et humains
Cette traduction a Ă©tĂ© rĂ©alisĂ©e par une IA guidĂ©e par des humains. đ€
Elle peut contenir des erreurs d'interprĂ©tation du sens original, ou paraĂźtre peu naturelle, etc. đ€
Vous pouvez améliorer cette traduction en nous aidant à mieux guider le LLM d'IA.
Le fichier FastAPI le plus simple possible pourrait ressembler Ă ceci :
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
Copiez cela dans un fichier main.py.
Démarrez le serveur en direct :
$ <font color="#4E9A06">fastapi</font> dev
<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">'/home/user/code/awesomeapp'</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.
Dans la sortie, il y a une ligne semblable Ă :
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
Cette ligne montre lâURL oĂč votre application est servie, sur votre machine locale.
VĂ©rifier¶
Ouvrez votre navigateur Ă lâadresse http://127.0.0.1:8000.
Vous verrez la réponse JSON suivante :
{"message": "Hello World"}
Documentation interactive de lâAPI¶
Allez maintenant sur http://127.0.0.1:8000/docs.
Vous verrez la documentation interactive de lâAPI gĂ©nĂ©rĂ©e automatiquement (fournie par Swagger UI) :

Documentation alternative de lâAPI¶
Et maintenant, allez sur http://127.0.0.1:8000/redoc.
Vous verrez la documentation automatique alternative (fournie par ReDoc) :

OpenAPI¶
FastAPI génÚre un « schéma » contenant toute votre API en utilisant le standard OpenAPI pour définir des API.
« SchĂ©ma »¶
Un « schĂ©ma » est une dĂ©finition ou une description de quelque chose. Pas le code qui lâimplĂ©mente, mais uniquement une description abstraite.
« SchĂ©ma » dâAPI¶
Ici, OpenAPI 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.
« SchĂ©ma » de donnĂ©es¶
Le terme « schĂ©ma » peut Ă©galement faire rĂ©fĂ©rence Ă la forme dâune 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 dĂ©finit un schĂ©ma dâAPI 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¶
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.
Il affichera un JSON commençant par quelque chose comme :
{
"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¶
Le schéma OpenAPI est ce qui alimente les deux systÚmes de documentation interactive inclus.
Et il existe des dizaines dâalternatives, toutes basĂ©es sur OpenAPI. Vous pourriez facilement ajouter nâimporte laquelle de ces alternatives Ă votre application construite avec FastAPI.
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¶
Vous pouvez configurer lâemplacement de votre application dans un fichier pyproject.toml commeâŻ:
[tool.fastapi]
entrypoint = "main:app"
Ce entrypoint indiquera Ă la commande fastapi quâelle doit importer lâapplication commeâŻ:
from main import app
Si votre code est structurĂ© commeâŻ:
.
âââ backend
â  âââ main.py
â  âââ __init__.py
Alors vous dĂ©finiriez le entrypoint commeâŻ:
[tool.fastapi]
entrypoint = "backend.main:app"
ce qui Ă©quivaudrait Ă âŻ:
from backend.main import app
fastapi dev avec un chemin¶
Vous pouvez Ă©galement passer le chemin du fichier Ă la commande fastapi dev, et elle devinera lâobjet dâapplication FastAPI Ă utiliserâŻ:
$ 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 ou FastAPI Cloud, il est donc recommandĂ© dâutiliser le entrypoint dans pyproject.toml.
DĂ©ployer votre application (optionnel)¶
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. đ
Si vous avez dĂ©jĂ un compte FastAPI Cloud (nous vous avons invitĂ© depuis la liste dâattente đ), vous pouvez dĂ©ployer votre application avec une seule commande.
Avant de dĂ©ployer, vous devez vous assurer que vous ĂȘtes connectĂ© :
$ fastapi login
You are logged in to FastAPI Cloud đ
Puis déployez votre application :
$ fastapi deploy
Deploying to FastAPI Cloud...
â
Deployment successful!
đ Ready the chicken! Your app is ready at https://myapp.fastapicloud.dev
Câest tout ! Vous pouvez maintenant accĂ©der Ă votre application Ă cette URL. âš
RĂ©capitulatif, Ă©tape par Ă©tape¶
Ătape 1 : importer FastAPI¶
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
FastAPI est une classe Python qui fournit toutes les fonctionnalités nécessaires à votre API.
Détails techniques
FastAPI est une classe qui hérite directement de Starlette.
Vous pouvez donc aussi utiliser toutes les fonctionnalités de Starlette avec FastAPI.
Ătape 2 : crĂ©er une « instance » FastAPI¶
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
Ici, la variable app sera une « instance » de la classe FastAPI.
Ce sera le point principal dâinteraction pour crĂ©er toute votre API.
Ătape 3 : crĂ©er un « chemin dâaccĂšs »¶
Chemin¶
« Chemin » fait ici rĂ©fĂ©rence Ă la derniĂšre partie de lâURL Ă 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 dâune API, le « chemin » est la maniĂšre principale de sĂ©parer les « prĂ©occupations » et les « ressources ».
OpĂ©ration¶
« OpĂ©ration » fait ici rĂ©fĂ©rence Ă lâune des « mĂ©thodes » HTTP.
Lâune de :
POSTGETPUTDELETE
... et les plus exotiques :
OPTIONSHEADPATCHTRACE
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 dâaccĂšs »¶
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
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
getopération
@decorator Info
Cette syntaxe @something en Python est appelée un « décorateur ».
Vous la mettez au-dessus dâune fonction. Comme un joli chapeau dĂ©coratif (jâimagine que câest 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.
Câest le « dĂ©corateur de chemin dâaccĂš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()
Astuce
Vous ĂȘtes libre dâutiliser chaque opĂ©ration (mĂ©thode HTTP) comme vous le souhaitez.
FastAPI nâimpose 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 dâaccĂšs¶
Voici notre « fonction de chemin dâaccĂšs » :
- chemin :
/. - opération :
get. - fonction : la fonction sous le « décorateur » (sous
@app.get("/")).
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
Câest une fonction Python.
Elle sera appelĂ©e par FastAPI chaque fois quâil recevra une requĂȘte vers lâURL « / » en utilisant une opĂ©ration GET.
Dans ce cas, câest une fonction async.
Vous pouvez aussi la définir comme une fonction normale au lieu de async def :
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def root():
return {"message": "Hello World"}
Remarque
Si vous ne connaissez pas la différence, consultez Asynchrone : « Pressé ? ».
Ătape 5 : retourner le contenu¶
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
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 dâutiliser vos favoris, il est fort probable quâils soient dĂ©jĂ pris en charge.
Ătape 6 : le dĂ©ployer¶
DĂ©ployez votre application sur FastAPI Cloud avec une seule commande : fastapi deploy. đ
Ă propos de FastAPI Cloud¶
FastAPI Cloud 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.
Il apporte la mĂȘme expĂ©rience dĂ©veloppeur de crĂ©ation dâapplications 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 dâautres fournisseurs cloud¶
FastAPI est open source et basĂ© sur des standards. Vous pouvez dĂ©ployer des applications FastAPI chez nâimporte quel fournisseur cloud de votre choix.
Suivez les guides de votre fournisseur cloud pour y dĂ©ployer des applications FastAPI. đ€
RĂ©capitulatif¶
- Importez
FastAPI. - Créez une instance
app. - Ăcrivez un dĂ©corateur de chemin dâaccĂšs avec des dĂ©corateurs comme
@app.get("/"). - DĂ©finissez une fonction de chemin dâaccĂš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.