encyklopedia.space

FastAPI

FastAPI – nowoczesny, szybki (high‑performance) framework do budowy interfejsów REST i GraphQL w języku Python. Został zaprojektowany z myślą o maksymalnym wykorzystaniu możliwości asynchronicznego środowiska asyncio oraz o zapewnieniu automatycznej dokumentacji zgodnej ze specyfikacją OpenAPI (wcześniej Swagger).

Historia

Projekt FastAPI został uruchomiony w 2018 roku przez Sebastiana Ramira (Sebastian Ramos) i od tego czasu zyskał szerokie zastosowanie wśród społeczności Pythona. Pierwsza stabilna wersja 0.1.0 pojawiła się w 2018 roku, a kolejne wydania wprowadzały wsparcie dla najnowszych standardów OpenAPI oraz JSON Schema.

Główne cechy

  • Wysoka wydajność – oparta na Starlette i Uvicorn, co pozwala na osiąganie prędkości porównywalnej z Node.js oraz Go.
  • Typowanie – pełne wykorzystanie PEP 484 oraz Pydantic do walidacji danych i automatycznej konwersji typów.
  • Automatyczna dokumentacja – generuje interfejsy Swagger UI i ReDoc w oparciu o OpenAPI.
  • Obsługa asynchroniczna – pełne wsparcie dla async/await oraz połączeń WebSocket.
  • Łatwość testowania – integracja z pytest i wbudowany klient testowy.

Architektura

FastAPI jest warstwą wyższego poziomu nad biblioteką Starlette. Dzięki temu korzysta z:

  1. Routera – definiuje ścieżki (/items/, /users/{id}) i obsługuje metody HTTP.
  2. Dependency Injection – system wstrzykiwania zależności umożliwiający definiowanie współdzielonych zasobów (np. połączeń z bazą danych) w sposób deklaratywny.
  3. Walidatora danych – Pydantic konwertuje i waliduje przychodzące JSON‑y oraz formy danych.
  4. Silnika asynchronicznego – Uvicorn jako serwer ASGI, który uruchamia aplikację.

Podstawowy przykład

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Item(BaseModel):
    name: str
    price: float

@app.get("/items/{item_id}")
async def read_item(item_id: int):
    return {"item_id": item_id, "name": "Przykład"}

@app.post("/items/")
async def create_item(item: Item):
    return {"message": "Utworzono", "item": item.dict()}

Powyższy kod demonstruje definicję endpointów GET i POST, automatyczną walidację danych oraz generowaną dokumentację.

Porównanie z innymi frameworkami

Cecha FastAPI Django REST Framework Flask
Wydajność (req/s) ≈ 33 000 ≈ 6 000 ≈ 8 000
Wsparcie async Pełne Częściowe Od Flask 2.0
Automatyczna dokumentacja Tak (Swagger, ReDoc) Nie (wymaga dodatkowych paczek) Nie
Walidacja danych Pydantic (typy Pythona) Serializatory Ręczna

Zastosowania

FastAPI znajduje zastosowanie w:

  • mikroserwisach i architekturach zorientowanych na usługi,
  • aplikacjach data‑science, gdzie potrzebna jest szybka integracja modeli uczenia maszynowego (np. poprzez Pydantic),
  • systemach IoT i aplikacjach czasu rzeczywistego z WebSocket,
  • plikach API gateway i serwerach GraphQL (z dodatkową warstwą konwersji).

Ecosystem i narzędzia

Wokół FastAPI rozwinęła się bogata społeczność i szereg dodatkowych bibliotek:

Licencja i rozwój

FastAPI jest rozpowszechniany na licencji MIT. Kod źródłowy znajduje się w publicznym repozytorium GitHub (repozytorium wewnętrzne encyklopedii). Projekt jest aktywnie rozwijany, a nowe wersje pojawiają się regularnie, wprowadzając wsparcie dla OpenAPI 3.1 oraz usprawnienia w obsłudze HTTP/2.

Przyszłość

W najnowszych dyskusjach społeczności przewidywany jest wzrost integracji z WebAssembly, rozwój narzędzi do automatycznego testowania kontraktów API oraz dalsze optymalizacje pod kątem edge computing.

W skrócie, FastAPI łączy w sobie prędkość, prostotę i nowoczesne rozwiązania typowania, co sprawia, że jest jednym z najpopularniejszych frameworków do budowy API w ekosystemie Python w latach 2020‑2026.