Szybki start z FastAPI – jak stworzyć nowoczesne REST API w 15 minut

Zobacz, jak w 15 minut zbudować nowoczesne REST API z użyciem FastAPI! Idealne dla programistów Python szukających szybkiego startu.
09 sierpnia 2025
blog

Wprowadzenie do FastAPI

FastAPI to nowoczesny, szybki (wysokowydajny) framework webowy dla języka Python, który pozwala na szybkie budowanie interfejsów API zgodnych ze standardem REST. Zaprojektowany został z myślą o prostocie, wydajności i pełnym wsparciu dla typowania danych. Dzięki wykorzystaniu asynchroniczności oraz pełnej integracji z systemem typów Pythona, FastAPI pozwala tworzyć skalowalne i łatwe w utrzymaniu aplikacje webowe.

Jedną z największych zalet FastAPI jest jego zdolność do automatycznego generowania dokumentacji interfejsu API w czasie rzeczywistym. Umożliwia to błyskawiczne testowanie i sprawdzanie działania endpointów bez konieczności stosowania dodatkowych narzędzi. Framework doskonale sprawdza się zarówno w małych projektach, jak i dużych systemach mikroserwisowych, w których ważna jest wydajność i niezawodność.

FastAPI wyróżnia się także:

  • Asynchronicznością – dzięki wsparciu dla async/await umożliwia obsługę wielu żądań jednocześnie bez blokowania serwera.
  • Walidacją danych – opiera się na bibliotece Pydantic, co pozwala na automatyczne sprawdzanie poprawności danych wejściowych.
  • Otwartością – generuje dokumentację OpenAPI i JSON Schema bez konieczności dodatkowej konfiguracji.

Dzięki intuicyjnej składni i ścisłemu powiązaniu z typowaniem statycznym, FastAPI jest idealnym wyborem dla programistów szukających narzędzia, które pozwoli im szybko stworzyć nowoczesne, bezpieczne i dobrze udokumentowane REST API. Już kilka linijek kodu wystarczy, by uruchomić w pełni funkcjonalny serwer i opublikować pierwszy endpoint.

Instalacja środowiska i wymaganych bibliotek

Aby rozpocząć pracę z FastAPI, potrzebujesz jedynie kilku podstawowych narzędzi. FastAPI działa w środowisku Python, dlatego pierwszym krokiem jest upewnienie się, że masz zainstalowaną aktualną wersję Pythona (zalecane: Python 3.8 lub nowszy).

Do organizacji projektu warto użyć wirtualnego środowiska. Dzięki temu możesz zarządzać zależnościami w sposób izolowany, bez wpływu na inne projekty. W systemach Unixowych i Windows sprawdzi się do tego venv.

Gdy środowisko jest gotowe, przechodzimy do instalacji bibliotek. FastAPI opiera się na nowoczesnych technologiach, takich jak Pydantic (do walidacji danych) oraz Starlette (jako szybki backend HTTP). Sam FastAPI jest zbudowany na ich bazie, więc ich instalacja jest automatyczna.

Wystarczy jedno polecenie, aby dodać wszystkie podstawowe zależności:

pip install fastapi[all]

Opcja [all] instaluje również Uvicorn, czyli lekki i wydajny serwer ASGI (Asynchronous Server Gateway Interface), na którym uruchomimy naszą aplikację. Pozwala to na natychmiastowe wystartowanie projektu bez potrzeby ręcznego dodawania dodatkowych komponentów.

Warto również zainstalować narzędzia wspomagające pracę – np. httpie lub curl do testowania endpointów z poziomu terminala, oraz edytor kodu wspierający podpowiedzi składni, taki jak VS Code.

Po zakończeniu instalacji mamy wszystkie niezbędne elementy, by rozpocząć tworzenie struktury naszej aplikacji i definiować pierwsze funkcjonalności REST API z wykorzystaniem FastAPI.

Tworzenie podstawowej struktury projektu

Aby rozpocząć pracę z FastAPI w sposób uporządkowany i skalowalny, warto już na początku zadbać o odpowiednią strukturę katalogów i plików projektu. Choć FastAPI pozwala na stworzenie w pełni działającego API w jednym pliku, przy większych projektach dobrze jest rozdzielić logikę na mniejsze, wyspecjalizowane moduły.

Typowa struktura projektu FastAPI może wyglądać następująco:

my_fastapi_app/
├── app/
│   ├── main.py
│   ├── api/
│   │   └── routes.py
│   ├── models/
│   │   └── user.py
│   ├── schemas/
│   │   └── user.py
│   └── services/
│       └── user_service.py
├── requirements.txt
└── README.md

Opis podstawowych katalogów:

  • app/main.py – Główna aplikacja FastAPI, punkt wejścia projektu.
  • api/routes.py – Plik z definicjami ścieżek (endpointów) API.
  • models/ – Zawiera modele danych odwzorowujące np. strukturę bazy danych.
  • schemas/ – Definicje schematów Pydantic do walidacji i serializacji danych.
  • services/ – Logika biznesowa aplikacji oddzielona od warstwy API.

Porównajmy dwa podejścia do tworzenia aplikacji FastAPI:

Struktura jednoplikowa Struktura modułowa
Wszystko w jednym pliku (np. app.py) Rozdzielone katalogi dla logiki, modeli, routingu
Szybki start, dobra dla prototypów Lepiej skalowalna i łatwiejsza w utrzymaniu
Mniej przejrzysta przy większych projektach Wyraźnie rozdzielona odpowiedzialność modułów

Na tym etapie warto również przygotować plik requirements.txt z zależnościami, np.:

fastapi
uvicorn[standard]

Utrzymanie przejrzystej struktury projektu od początku ułatwia dalszy rozwój aplikacji, testowanie oraz współpracę zespołową. Dzięki modularności FastAPI, łatwo podzielić aplikację na mniejsze, osobne komponenty, co sprzyja lepszej organizacji kodu i jego ponownemu użyciu. Jeśli chcesz poszerzyć swoją wiedzę o tworzeniu aplikacji webowych w Pythonie, zobacz również Kurs Tworzenie aplikacji webowych w Pythonie z wykorzystaniem Django.

Definiowanie pierwszych endpointów REST API

FastAPI umożliwia szybkie i intuicyjne tworzenie punktów końcowych REST API, bazując na standardach HTTP i strukturze ścieżek URL. Każdy endpoint może obsługiwać różne metody HTTP takie jak GET, POST, PUT czy DELETE, co pozwala na tworzenie pełnych operacji CRUD (Create, Read, Update, Delete).

Podstawowe podejście polega na dekorowaniu funkcji przy pomocy metod @app.get(), @app.post() itd., które wskazują, jakiego typu żądanie obsługuje dany endpoint. Poniżej znajduje się prosty przykład:

from fastapi import FastAPI

app = FastAPI()

@app.get("/hello")
def say_hello():
    return {"message": "Hello, world!"}

W powyższym przykładzie zdefiniowano najprostszy endpoint typu GET, który zwraca komunikat w formacie JSON.

Porównanie metod HTTP

Metoda Opis Typowe zastosowanie
GET Pobieranie danych Odczyt zasobu
POST Tworzenie nowego zasobu Dodawanie danych
PUT Aktualizacja istniejącego zasobu Pełna modyfikacja
DELETE Usuwanie zasobu Kasowanie danych

FastAPI wspiera również dynamiczne ścieżki oraz przekazywanie parametrów do funkcji obsługujących żądania. Dzięki temu można łatwo tworzyć bardziej złożone operacje, np. pobieranie danych według identyfikatora:

@app.get("/items/{item_id}")
def get_item(item_id: int):
    return {"item_id": item_id}

W tym przykładzie FastAPI automatycznie przeprowadza konwersję typu oraz walidację przekazanego parametru item_id.

Definiowanie endpointów w FastAPI jest nie tylko proste, ale również bardzo czytelne. Dzięki typowaniu i zintegrowanej dokumentacji, nawet zaawansowane API można zbudować w sposób uporządkowany i łatwo testowalny.

Uruchamianie lokalnego serwera FastAPI

Po utworzeniu pierwszych endpointów REST API w FastAPI, kolejnym krokiem jest ich uruchomienie na lokalnym serwerze deweloperskim. FastAPI korzysta z serwera Uvicorn, który jest lekkim i szybkim serwerem ASGI – idealnym do testowania oraz pracy lokalnej.

Aby uruchomić aplikację, należy wykonać poniższe polecenie w terminalu:

uvicorn main:app --reload

Gdzie:

  • main – to nazwa pliku Python, w którym znajduje się aplikacja FastAPI (bez rozszerzenia .py),
  • app – to obiekt aplikacji FastAPI utworzony w tym pliku,
  • --reload – opcjonalna flaga, która pozwala na automatyczne przeładowywanie serwera po każdej zmianie w kodzie – bardzo przydatna w fazie rozwoju.

Po uruchomieniu, terminal powinien wyświetlić informacje podobne do poniższych:

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Application startup complete.

Domyślnie, API będzie dostępne pod adresem http://127.0.0.1:8000, a dokumentacja interfejsu pojawi się pod http://127.0.0.1:8000/docs.

Tryby uruchamiania

Zależnie od potrzeb, aplikację można uruchamiać w różnych trybach. Poniżej znajduje się krótkie porównanie:

Tryb Parametr Zastosowanie
Tryb deweloperski --reload Automatyczne przeładowanie serwera przy każdej zmianie w kodzie
Tryb produkcyjny bez --reload Stabilne środowisko bez przeładowywania – do wdrożeń

Na obecnym etapie pracy najczęściej korzysta się z trybu deweloperskiego, ale warto znać oba podejścia, by w przyszłości dostosować sposób uruchomienia do środowiska produkcyjnego. Jeśli interesuje Cię tworzenie nowoczesnych aplikacji webowych w innych technologiach, sprawdź także Kurs Node.js – budowanie dynamicznych aplikacji internetowych.

Testowanie API przy użyciu interfejsu Swagger UI

FastAPI automatycznie generuje przyjazny interfejs użytkownika do testowania API, oparty na Swagger UI. Dzięki temu możesz szybko przetestować swoje endpointy bez konieczności pisania dodatkowego kodu lub korzystania z zewnętrznych narzędzi. Interfejs ten jest dostępny od razu po uruchomieniu aplikacji i stanowi potężne narzędzie do eksploracji dokumentacji oraz testów manualnych.

Aby uzyskać dostęp do Swagger UI, wystarczy uruchomić aplikację FastAPI i przejść w przeglądarce do adresu:

http://localhost:8000/docs

Swagger UI pozwala m.in. na:

  • Przeglądanie wszystkich dostępnych endpointów REST API
  • Sprawdzenie metod HTTP (GET, POST, PUT, DELETE itd.)
  • Wysyłanie zapytań z parametrami bezpośrednio z poziomu przeglądarki
  • Podgląd przykładów danych wejściowych i odpowiedzi

Oprócz Swagger UI, FastAPI udostępnia także alternatywny interfejs ReDoc, dostępny pod adresem:

http://localhost:8000/redoc

Poniższa tabela porównuje podstawowe cechy obu interfejsów:

Cecha Swagger UI ReDoc
Możliwość wykonywania zapytań Tak Nie
Przejrzystość dokumentacji Bardziej interaktywna Bardziej czytelna
Dostępność domyślna /docs /redoc

Poniższy przykład przedstawia prosty endpoint, który po uruchomieniu automatycznie pojawi się w interfejsie Swagger UI:

from fastapi import FastAPI

app = FastAPI()

@app.get("/hello")
def read_hello():
    return {"message": "Hello, world!"}

Po uruchomieniu aplikacji, endpoint /hello będzie widoczny w Swagger UI, gdzie można przetestować jego działanie klikając przycisk Try it out.

Dzięki wbudowanej dokumentacji, FastAPI znacząco przyspiesza proces testowania i rozwoju API, umożliwiając błyskawiczną walidację działania bez konieczności użycia zewnętrznych narzędzi.

Obsługa błędów i walidacja danych

FastAPI oferuje wbudowane mechanizmy, które znacząco ułatwiają obsługę błędów oraz walidację danych wejściowych. Dzięki wykorzystaniu biblioteki Pydantic oraz integracji z typowaniem języka Python, możliwe jest automatyczne sprawdzanie poprawności danych przesyłanych do API, jeszcze zanim trafią one do naszej logiki aplikacji.

Walidacja danych odbywa się głównie poprzez definiowanie modeli danych przy pomocy Pydantic. Każde pole w takim modelu może mieć określony typ, wartości domyślne, ograniczenia (np. minimalna długość tekstu, zakres liczbowy) i inne właściwości. FastAPI automatycznie sprawdzi, czy dane wysłane przez użytkownika spełniają te wymagania i w razie potrzeby zwróci szczegółowy komunikat o błędzie.

Obsługa błędów natomiast pozwala na lepsze zarządzanie sytuacjami wyjątkowymi, np. brakiem zasobu, błędnym żądaniem czy błędem serwera. FastAPI umożliwia definiowanie własnych wyjątków oraz dostosowywanie odpowiedzi HTTP, jakie zostaną zwrócone w przypadku ich wystąpienia.

Przykładowo, jeśli użytkownik prześle niepoprawne dane w zapytaniu POST, FastAPI automatycznie wygeneruje odpowiedź z kodem 422 i szczegółami dotyczącymi błędnych pól. Natomiast w przypadku bardziej zaawansowanych scenariuszy można zdefiniować własne wyjątki i zwrócić np. odpowiedź z kodem 404, jeśli żądany zasób nie istnieje.

Takie podejście nie tylko upraszcza kod aplikacji, ale też znacząco poprawia jej niezawodność i komfort użytkowania – zarówno dla twórców, jak i konsumentów API.

Podsumowanie i dalsze kroki rozwoju API

FastAPI to nowoczesny framework webowy, który łączy łatwość użycia z wysoką wydajnością. Dzięki wsparciu dla asynchronicznego przetwarzania, automatycznej dokumentacji, walidacji danych oraz integracji z typami Pythona, pozwala na szybkie tworzenie i rozwijanie skalowalnych REST API.

W krótkim czasie jesteśmy w stanie uruchomić działający serwis API, który jest czytelny, bezpieczny i gotowy do dalszej rozbudowy. FastAPI doskonale sprawdza się zarówno w małych projektach, jak i w złożonych systemach mikroserwisowych, gdzie istotna jest wydajność i łatwość utrzymania.

W miarę jak Twoje API będzie się rozwijać, warto zastanowić się nad implementacją takich funkcji jak:

  • Autoryzacja i uwierzytelnianie – w celu ochrony zasobów i zarządzania dostępem użytkowników.
  • Obsługa baz danych – integracja z systemami jak PostgreSQL, MySQL czy MongoDB za pomocą ORM-ów lub surowych zapytań.
  • Testy jednostkowe i integracyjne – aby zapewnić niezawodność i łatwość refaktoryzacji kodu.
  • Wersjonowanie API – umożliwiające bezpieczne wprowadzanie zmian w interfejsie.
  • Monitoring i logowanie – dla lepszej kontroli nad działaniem aplikacji w środowisku produkcyjnym.

Budowanie API z FastAPI to proces iteracyjny – każda nowa funkcjonalność może być dodawana stopniowo, z zachowaniem przejrzystości kodu i zgodności ze standardami. Dzięki temu możliwe jest tworzenie rozwiązań zarówno prostych, jak i bardzo zaawansowanych – wszystko w oparciu o nowoczesne technologie i dobre praktyki programistyczne.

icon

Formularz kontaktowyContact form

Imię *Name
NazwiskoSurname
Adres e-mail *E-mail address
Telefon *Phone number
UwagiComments