Szybki framework dla Pythona do łatwego budowania API.
Czym się przede wszystkim cechuje?
FastAPI to nowoczesna, szybka (wysokowydajna) platforma internetowa do tworzenia interfejsów API w języku Python 3.6+. Kluczowe cechy to:
- Szybkość działania: bardzo wysoka wydajność, na równi z NodeJS i Go (dzięki Starlette i Pydantic). Jeden z najszybszych dostępnych frameworków Pythona.
- Szybkość kodowania: według twórców zwiększa szybkość tworzenia funkcji o około 200% do 300%.
- Mniejsza ilość błędów: redukcja około 40% błędów wywołanych przez człowieka (programistów).
- Intuicyjny: Świetna obsługa edytora. Uzupełnianie (completion). Mniej czasu spędzonego na debugowaniu.
- Łatwość obsługi: zaprojektowany tak, aby był łatwy w użyciu i nauce. Mniej czasu na czytanie dokumentów.
- Przemyślany: minimalizuje konieczność powielania kodu.
- Solidność: uzyskasz kod gotowy na produkcję, z automatyczną i interaktywną dokumentacją.
- Oparty na standardach: w pełni kompatybilny z otwartymi standardami API: OpenAPI (wcześniej znanym jako Swagger) i JSON.
Wymagania? Python 3.6+ i to wszystko. FastAPI korzysta z uznanych technologii: Starlette (obsługa części internetowej) oraz Pydantic (operacje na danych).
Jeśli tworzysz aplikację wiersza poleceń, która ma być używana w terminalu (zamiast internetowego interfejsu API) warto skorzystać z Typera. To taki mniejszy brat FastAPI.
Nie musisz uczyć się nowej składni, metod lub klas określonej biblioteki itp. Tylko standardowy Python 3.6+. Jeśli zaczynasz też z samym Pythonem, zajrzyj tutaj.
Instalacja
Nic prostszego: pip install fastapi
. Będziesz także potrzebował serwer ASGI, taki jak Uvicorn czy Hypercorn: pip install uvicorn[standard]
.
Przykładowa aplikacja
Utwórz plik main.py o zawartości:
from typing import Optional
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: Optional[str] = None):
return {"item_id": item_id, "q": q}
Uruchom serwer przez uvicorn main:app –reload
. W przeglądarce otwórz teraz stronę http://127.0.0.1:8000/items/5?q=somequery
. Zobaczysz odpowiedź zawierającą JSONa, na przykład: {"item_id": 5, "q": "somequery"}
.
Właśnie stworzyłeś pierwsze API:
- Czeka ono na żądania http na ścieżkach
/
oraz/items/{item_id}
. - Obie ścieżki opierają się na żądaniach
GET
- Ścieżka
/items/{item_id}
przyjmuje parametritem_id
, który powinien byćint
. - Ścieżka
/items/{item_id}
przyjmuje też opcjonalny parametrq
, będącystr
.
Dokumentacja
Pod adresem http://127.0.0.1:8000/docs
znajdziesz automatycznie wygenerowaną, interaktywną dokumentację dostarczoną przez Swaggera. Z kolei pod adresem http://127.0.0.1:8000/redoc
możesz korzystać z alternatywnej dokumentacji wygenerowanej z użyciem ReDoc.