Aller au contenu

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.

Version anglaise

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">&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.

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

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

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 :

  • 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 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 get opĂ©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.