FastAPI : 르누보 프레임워크 웹 푸어 vos API avec Python

I y a depuis longtemps deux frameworks web bien implantés dans le monde Python : Django et Flask . I y a des pros et des cons à chacun de ces frameworks, Django étant souvent présenté comme plus complet mais plus difficile à prendre en main, Flask comme étant plus simple pour déployer Rapidement une API.

Depuis quelques mois, on entend de plus en plus parler d'un nouveau 프레임워크: FastAPI . 예를 들어 JetBrains conduit tous les ans une enquete auprès de développeur.se.s Python et FastAPI a faitune entrée remarquée en 2020:

FastAPI was introduced to the options for the first time with this iteration of the survey, and it appears to be the third most popular web framework for Python.



CE 프레임워크 se veut moderne, Rapide, prêt au déploiement. Voyons voir ça !

설치



L'installation se fait bien évidemment avecpip :

pip install fastapi[all]


Petit truc exotique quand meme : des crochets dans le nom du paquet. Histoire de mettre un peu de paillettes dans la vie des développeurs.

Notez qu' uvicorn sera installé en meme temps. Il nous servira de serveur 푸어 노 exemples.

안녕, 세상



Dans un dossiermyapi, crée un fichiermain.py:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "hello, world"}


Ce code est très simple à comprendre. On crée une instance de FastAPI nommée app, puis on ajoute une route vers la racine avec une operation GET, grâce une élégante syntaxe à base d'annotations.

On lance un serverur pour 노출자 notre API:

$> cd myapi
$> uvicorn main:app --reload
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [1972] using watchgod
INFO:     Started server process [16100]
INFO:     Waiting for application startup.
INFO:     Application startup complete.


iciuvicorn를 사용하려면 서버를 방문하십시오. On lui demande d'utiliser le module Python main (il faut donc exécuter la commande depuis le dossier où se trouve notre fichier main.py ) et y chercher l'instance app de FastAPI.

ouvre l'adresse indiquée dans un navigationur:



L'option--reload demande à uvicorn de Charger le site au fur et à mesure que le fichier main.py est modifié, sans avoir besoin de redémarrer l'application.

ajoute une nouvelle route/about dans à notre API에서 테스터 기능을 따르십시오.

@app.get('/about')
async def about():
    return {"about": "This is my first api with FastAPI"}


Les logs de uvicorn montrent que les changements sont bien détectés et chargés :

WARNING:  WatchGodReload detected file change in '['C:\\myapi\\main.py']'. Reloading...
INFO:     Started server process [3708]
INFO:     Waiting for application startup.
INFO:     Application startup complete.


세테 누벨 루트 에스트 액세스 가능한 파 노트르 네비게이터:



경로 매개변수



Il est bien sûr possible d'ajouter des paramètres à une route.

변수에 따라 예를 따르십시오users avec la liste des utilisateurs. On ajoute une route de type GET pour récupérer cette liste, et une route de type POST pour ajoute un élément à cette liste:

users = ['pierre', 'natacha', 'benjamin']


@app.get('/users/list')
async def users_list():
    """Get the list of available users."""
    return json.dumps(users)


@app.post('/users/add/{name}')
async def users_add(name: str):
    """Add a new user.

    :param name: the name of the new user
    """
    users.append(name)
    return {'added': name}


활용 시curl 테스터 nouvelles 경로를 따르십시오.

$ curl --request GET http://127.0.0.1:8000/users/list
"[\"pierre\", \"natacha\", \"benjamin\"]"
$ curl --request POST http://127.0.0.1:8000/users/add/florian
{"added":"florian"}
$ curl --request POST http://127.0.0.1:8000/users/add/denis
{"added":"denis"}
$ curl --request POST http://127.0.0.1:8000/users/add/bertrand
{"added":"bertrand"}
$ curl --request GET http://127.0.0.1:8000/users/list
"[\"pierre\", \"natacha\", \"benjamin\", \"florian\", \"denis\", \"bertrand\"]"


API 설명서



FastAPI는 l'API 문서에 대한 일반 문서를 담당합니다. Cette 문서 est 액세스 가능한 grâce à des route ajoutées automatiquement à l'API.

pour cela, il génère un schémaOpenAPI, en récupérant les docstrings des fonctions annotées. Ce schéma est disponible avec la route/openapi.json:



Ensuite, il 활용 Swagger UI et Redoc 푸어 르 렌두. Avec les route/docs/redoc 각각에 액세스할 수 있는 문서의 Ces 2 버전.





ainsi la liste des route, avec leurs types, leurs paramètres, leurs documentation. peut tester notre API 지시문에서 페이지가 삭제되었습니다. Et comme tout est en auto-reload, on peut faire nos modifiers au fur et à mesure et uvicorn remettra à jour /docs et /redoc 푸어 퀴온 푸이스 재시험자 즉시.

결론



Mes premières Impressions sur FastAPI sont très positives. La Syntaxe est proche de celle de Flask, peut-être encore plus simple et élégante. La génération automatique et out-of-the-box de la documentation est vraiment cool ! Je ne me suis pas intéressé à l'aspect performance du framework, pour me concentrer sur Son utilisation. Je vous laisse Consulter la section "Benchmarks" du site officiel pour cela.

좋은 웹페이지 즐겨찾기