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

Poznaj FastAPI i stwórz nowoczesne REST API w zaledwie 15 minut! Praktyczny przewodnik krok po kroku dla początkujących i średniozaawansowanych programistów.
19 lipca 2025
blog

Wprowadzenie do FastAPI i REST API

FastAPI to nowoczesny framework webowy dla języka Python, zaprojektowany z myślą o tworzeniu wydajnych i łatwych w utrzymaniu interfejsów API. Korzysta z możliwości typowania znanych z Pythona 3.6+, co pozwala na automatyczną walidację danych, generowanie dokumentacji oraz zwiększenie czytelności kodu.

REST API (Representational State Transfer) to styl architektoniczny wykorzystywany do budowania skalowalnych usług sieciowych. W praktyce oznacza to udostępnianie danych i funkcjonalności aplikacji za pomocą standardowych metod HTTP, takich jak GET, POST, PUT czy DELETE. Pozwala to na komunikowanie się z aplikacją w sposób ustandaryzowany i czytelny dla innych systemów.

FastAPI łączy w sobie prostotę Pythona z wysoką wydajnością dzięki wykorzystaniu asynchroniczności (async/await) oraz silnikowi Starlette pod spodem. Framework został zaprojektowany z myślą o szybkim tworzeniu aplikacji zgodnych z zasadami REST, oferując przy tym automatyczne generowanie dokumentacji w czasie rzeczywistym oraz łatwe testowanie endpointów.

Typowe zastosowania FastAPI to między innymi:

  • budowanie mikroserwisów i usług backendowych,
  • tworzenie interfejsów API dla aplikacji webowych i mobilnych,
  • tworzenie systemów przetwarzania danych i integracji,
  • tworzenie usług z wykorzystaniem sztucznej inteligencji i uczenia maszynowego.

To, co wyróżnia FastAPI na tle innych frameworków, to:

  • Wydajność – porównywalna z Node.js i Go,
  • Automatyczna dokumentacja – generowana na podstawie typów danych i dekoratorów,
  • Walidacja wejścia – wbudowana i intuicyjna dzięki integracji z biblioteką Pydantic,
  • Wsparcie dla asynchroniczności – ułatwiające skalowanie aplikacji.

Dzięki tym cechom FastAPI staje się atrakcyjnym wyborem zarówno dla początkujących, jak i doświadczonych programistów szukających nowoczesnego podejścia do tworzenia interfejsów API w Pythonie.

Instalacja FastAPI i niezbędnych zależności

Zanim rozpoczniemy pracę z FastAPI, musimy przygotować środowisko programistyczne oraz zainstalować kilka kluczowych pakietów. FastAPI działa w oparciu o asynchroniczny model programowania i został zaprojektowany do budowy wydajnych API opartych na standardzie REST. Aby skorzystać z jego możliwości, potrzebujemy tylko kilku podstawowych zależności.

Najprostszym sposobem na rozpoczęcie jest stworzenie wirtualnego środowiska. Dzięki temu unikniemy konfliktów między wersjami bibliotek w różnych projektach. Po aktywacji środowiska możemy zainstalować FastAPI oraz serwer ASGI — Uvicorn, który posłuży nam do uruchamiania aplikacji.

Instalację przeprowadzimy za pomocą menedżera pakietów pip. W konsoli wpisujemy:

pip install fastapi uvicorn

Sama biblioteka FastAPI zapewnia nam możliwość definiowania tras, obsługi zapytań HTTP i integracji z narzędziami dokumentującymi API. Uvicorn natomiast jest lekki i szybki, idealny do uruchamiania aplikacji opartych o ASGI, takich jak FastAPI.

Na tym etapie nie potrzebujemy dodatkowych zależności, ale warto pamiętać, że w przyszłości możemy rozszerzyć projekt o biblioteki do pracy z bazami danych, uwierzytelniania czy testowania.

W kolejnych krokach zbudujemy podstawową strukturę naszej aplikacji i sprawdzimy, jak wykorzystać zainstalowane narzędzia w praktyce.

Tworzenie podstawowej struktury projektu

Przygotowanie przejrzystej i modularnej struktury katalogów to klucz do utrzymania czytelności i skalowalności aplikacji FastAPI. Nawet w prostych projektach warto od początku zadbać o logiczny podział plików, co ułatwi rozwój aplikacji w przyszłości.

Najprostszy projekt FastAPI może składać się z jednego pliku, ale w praktyce dobrze jest rozdzielić logikę na mniejsze elementy. Poniżej prezentujemy przykładową strukturę katalogów dla małej aplikacji REST API:

my_fastapi_app/
├── app/
│   ├── main.py           # Punkt wejścia do aplikacji
│   ├── routes/
│   │   └── items.py      # Endpointy związane z zasobami "items"
│   ├── models.py         # Modele danych (np. Pydantic, ORM)
│   └── services.py       # Logika biznesowa i funkcje pomocnicze
├── requirements.txt      # Lista zależności
└── README.md             # Dokumentacja projektu

Podział ten pozwala oddzielić warstwy odpowiedzialne za:

  • Routing – definiowanie ścieżek API w folderze routes
  • Modele danych – typy wejściowe i wyjściowe w models.py
  • Logikę biznesową – funkcje przetwarzające dane w services.py
  • Uruchamianie aplikacji – konfiguracja FastAPI w main.py

Dla bardzo prostego projektu wystarczy jeden plik main.py z minimalną konfiguracją:

# main.py
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "Hello, FastAPI!"}

Wraz ze wzrostem złożoności projektu, warto przejść do modularnej struktury, która pozwala na łatwą rozbudowę i testowanie poszczególnych komponentów.

Dla porównania, poniższa tabela przedstawia różnice między prostą a modularną strukturą projektu:

Typ struktury Zalety Wady
Jednoplikiowa Prosta, szybka do uruchomienia Trudna do utrzymania w większych projektach
Modularna Skalowalna, testowalna, czytelna Wymaga początkowej organizacji

W kolejnych etapach rozwoju aplikacji, modularna struktura stanie się znaczną przewagą, zwłaszcza gdy liczba endpointów i zależności zacznie rosnąć. Jeśli chcesz szybciej rozwinąć swoje umiejętności w pracy z Pythonem – zwłaszcza w kontekście automatyzacji i analizy danych – sprawdź nasz Kurs Python - praktyczne wykorzystanie Pythona do analizy danych i automatyzacji.

Definiowanie pierwszych endpointów API

W FastAPI tworzenie endpointów, czyli punktów dostępowych do naszego API, jest szybkie i intuicyjne. Endpointy odpowiadają na konkretne żądania HTTP (np. GET, POST, PUT, DELETE) i pozwalają aplikacji komunikować się z użytkownikiem lub innym systemem. Każdy endpoint to funkcja powiązana z określoną ścieżką URL i metodą HTTP.

FastAPI wykorzystuje dekoratory do definiowania zachowania endpointów. Poniżej znajduje się krótki przykład pokazujący dwa podstawowe typy żądań:

from fastapi import FastAPI

app = FastAPI()

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

@app.post("/hello")
def create_hello(name: str):
    return {"message": f"Hello, {name}!"}

W powyższym przykładzie:

  • @app.get("/hello") obsługuje żądania typu GET – zazwyczaj używane do pobierania danych.
  • @app.post("/hello") definiuje żądanie POST – wykorzystywane do przesyłania danych do serwera.

Dzięki FastAPI możemy także dokładnie określać, jakie dane przyjmuje i zwraca dana funkcja, co prowadzi do większej przejrzystości i bezpieczeństwa kodu.

Poniższa tabela przedstawia podstawowe metody HTTP oraz ich zastosowanie w kontekście REST API:

Metoda HTTP Zastosowanie Przykładowa funkcja w FastAPI
GET Pobieranie danych @app.get("/items")
POST Tworzenie nowego zasobu @app.post("/items")
PUT Aktualizacja całego zasobu @app.put("/items/{id}")
DELETE Usuwanie zasobu @app.delete("/items/{id}")

Tworząc endpointy w FastAPI, zyskujemy także automatyczne walidowanie danych wejściowych i generowanie dokumentacji, co znacznie przyspiesza proces tworzenia interfejsów API zgodnych z nowoczesnymi standardami.

Uruchamianie serwera aplikacji

Po zdefiniowaniu podstawowych endpointów API, kolejnym krokiem jest uruchomienie serwera, który umożliwi testowanie i korzystanie z naszej aplikacji FastAPI. Domyślnie FastAPI używa serwera Uvicorn – lekkiego i szybkiego serwera ASGI (Asynchronous Server Gateway Interface).

Uruchomienie aplikacji FastAPI jest niezwykle proste i sprowadza się do jednej komendy:

uvicorn main:app --reload

Gdzie:

  • main to nazwa pliku (bez rozszerzenia .py), w którym znajduje się aplikacja FastAPI,
  • app to instancja FastAPI zadeklarowana w tym pliku,
  • --reload aktywuje tryb deweloperski – serwer automatycznie przeładowuje się po każdej zmianie w kodzie.

Oto szybkie porównanie dwóch typowych trybów uruchamiania aplikacji:

Tryb Komenda Zastosowanie
Tryb deweloperski uvicorn main:app --reload Idealny podczas tworzenia i testowania aplikacji – zmiany w kodzie są natychmiast widoczne.
Tryb produkcyjny uvicorn main:app Stabilne uruchomienie aplikacji bez automatycznego przeładowywania – zalecane do wdrożeń.

Po uruchomieniu serwera, aplikacja będzie domyślnie dostępna pod adresem http://127.0.0.1:8000. W kolejnych krokach możesz przetestować jej działanie oraz sprawdzić automatycznie generowaną dokumentację. Jeśli chcesz pójść o krok dalej i poznać techniki automatyzacji oraz optymalizacji w Pythonie, sprawdź nasz Kurs Python zaawansowany: automatyzacja, skrypty i optymalizacja procesów.

Testowanie i weryfikacja działania API

Po uruchomieniu serwera aplikacji istotnym krokiem jest sprawdzenie, czy nasze REST API działa zgodnie z oczekiwaniami. FastAPI udostępnia kilka wygodnych sposobów testowania endpointów, zarówno ręcznie poprzez przeglądarkę lub narzędzia typu curl, jak i automatycznie za pomocą testów jednostkowych.

Ręczne testowanie przy użyciu przeglądarki i narzędzi HTTP

Najprostszym sposobem weryfikacji działania API jest wywołanie endpointów za pomocą przeglądarki lub narzędzia takiego jak Postman czy curl. Dla przykładu, jeśli nasza aplikacja działa pod adresem http://127.0.0.1:8000, możemy przetestować metodę GET w ten sposób:

curl http://127.0.0.1:8000/items/42

W odpowiedzi powinniśmy otrzymać dane w formacie JSON, np.:

{
  "item_id": 42,
  "name": "Przykladowy produkt"
}

W przypadku bardziej złożonych zapytań (np. POST z danymi JSON), można użyć komendy:

curl -X POST http://127.0.0.1:8000/items/ \
     -H "Content-Type: application/json" \
     -d '{"name": "Nowy produkt", "price": 12.99}'

Porównanie metod testowania

Metoda Opis Zalety Wady
curl Narzędzie CLI do wysyłania zapytań HTTP Lekkie, szybkie, dostępne w terminalu Brak interfejsu graficznego
Postman Graficzne narzędzie do testowania API Przyjazny interfejs, historia zapytań, kolekcje Wymaga instalacji
Swagger UI Wbudowany interfejs testowania dostępny w FastAPI Intuicyjne, automatyczne, dostępne w przeglądarce Ograniczone możliwości zaawansowanej konfiguracji

Automatyczne testy z użyciem pytest i TestClient

Dla bardziej zorganizowanego podejścia warto wykorzystać bibliotekę pytest razem z klasą TestClient z FastAPI. Przykładowy test może wyglądać tak:

from fastapi.testclient import TestClient
from main import app

client = TestClient(app)

def test_read_item():
    response = client.get("/items/1")
    assert response.status_code == 200
    assert response.json()["item_id"] == 1

Dzięki temu możemy szybko sprawdzić poprawność działania kodu po każdej zmianie, a także zautomatyzować testy w procesach CI/CD.

Na tym etapie warto upewnić się, że wszystkie endpointy działają zgodnie z założeniami: zwracają odpowiednie kody statusu oraz oczekiwane dane. To pozwoli uniknąć błędów na dalszych etapach rozwoju aplikacji.

Dodanie dokumentacji Swagger UI

FastAPI oferuje wbudowaną, automatycznie generowaną dokumentację REST API w formacie Swagger UI, co stanowi jedną z jego największych zalet. Dzięki temu już od pierwszych chwil pracy z aplikacją możesz przeglądać, testować i udostępniać swoje endpointy bez konieczności ręcznego tworzenia dokumentacji.

Swagger UI jest dostępny pod domyślnym adresem /docs, a alternatywnie możesz skorzystać z dokumentacji w formacie ReDoc pod adresem /redoc. Obydwie wersje są generowane dynamicznie na podstawie definicji endpointów, typów danych i parametrów wejściowych.

Dokumentacja ta nie tylko opisuje dostępne ścieżki i operacje HTTP, ale również pozwala bezpośrednio testować działanie API za pomocą interaktywnego formularza. Jest to szczególnie przydatne podczas rozwoju aplikacji oraz przy współpracy z zespołem frontendowym.

Jeśli uruchomisz swoją aplikację FastAPI, a następnie przejdziesz do przeglądarki i wpiszesz adres serwera zakończony /docs, zobaczysz czytelną, interaktywną stronę zawierającą wszystkie zdefiniowane endpointy.

W przypadku bardziej zaawansowanych zastosowań, możliwe jest dostosowanie wyglądu dokumentacji, dodanie własnych opisów, tagów czy przykładów odpowiedzi, ale te tematy zostaną omówione osobno.

Podsumowanie i kolejne kroki

FastAPI to nowoczesny framework webowy dla języka Python, który umożliwia szybkie tworzenie wydajnych i dobrze udokumentowanych REST API. Dzięki swojej architekturze opartej na typowaniu i asynchroniczności, FastAPI oferuje znacznie wyższą wydajność w porównaniu do tradycyjnych rozwiązań, takich jak Flask czy Django REST Framework.

REST API (Representational State Transfer) to styl architektoniczny oparty na zasobach i operacjach HTTP, który jest obecnie standardem komunikacji w aplikacjach webowych i mobilnych. FastAPI wpisuje się w ten model, dostarczając jednocześnie narzędzia ułatwiające automatyczne generowanie dokumentacji, walidację danych oraz integrację z narzędziami frontendowymi czy systemami mikroserwisów.

W praktyce oznacza to, że tworząc API w FastAPI, dostajesz „w pakiecie” wiele funkcjonalności, które w innych frameworkach wymagają dodatkowych bibliotek lub konfiguracji. To czyni go świetnym wyborem zarówno dla początkujących, jak i profesjonalistów budujących produkcyjne aplikacje.

W kolejnych krokach dowiesz się, jak skonfigurować środowisko projektowe, stworzyć pierwsze endpointy oraz uruchomić i przetestować działające API.

Majczęściej zadawane pytania i odpowiedzi odnośnie Szybki start z FastAPI – jak stworzyć nowoczesne REST API w 15 minut

Jak zacząć pracę z FastAPI, jeśli chcę stworzyć proste REST API w Pythonie?

Najprościej zacząć od instalacji FastAPI i Uvicorn oraz utworzenia pliku main.py z jedną instancją aplikacji. W praktyce wystarczy przygotować środowisko, zainstalować pakiety poleceniem pip install fastapi uvicorn, dodać prosty endpoint i uruchomić serwer komendą uvicorn main:app --reload. Taki start pozwala szybko sprawdzić działanie API bez rozbudowanej konfiguracji.

Jakie pakiety są potrzebne do uruchomienia pierwszej aplikacji FastAPI?

Do pierwszej aplikacji FastAPI wystarczą FastAPI i Uvicorn. Sama biblioteka FastAPI służy do definiowania tras, obsługi żądań HTTP i generowania dokumentacji, a Uvicorn uruchamia aplikację jako serwer ASGI. Artykuł pokazuje, że na początku nie trzeba dodawać kolejnych zależności, chyba że projekt później wymaga bazy danych, testów lub uwierzytelniania.

Jak powinna wyglądać podstawowa struktura projektu w FastAPI?

Podstawowa struktura projektu w FastAPI może być bardzo prosta, ale przy rozwoju warto ją podzielić na moduły. Na start wystarczy jeden plik main.py, natomiast w większym projekcie lepiej rozdzielić odpowiedzialności. Najczęściej obejmuje to:

  • plik main.py jako punkt wejścia,
  • folder routes do endpointów,
  • pliki modeli danych,
  • warstwę logiki biznesowej.
Jak definiuje się endpointy GET i POST w FastAPI?

Endpointy GET i POST w FastAPI definiuje się za pomocą dekoratorów przypisanych do funkcji. Dekorator określa metodę HTTP i ścieżkę, a sama funkcja zwraca odpowiedź, najczęściej w formacie JSON. Dzięki temu kod jest czytelny i łatwy do rozwijania. FastAPI dodatkowo wykorzystuje typowanie Pythona, co upraszcza walidację danych wejściowych.

Jak uruchomić aplikację FastAPI lokalnie w trybie deweloperskim?

Aplikację FastAPI lokalnie uruchamia się najczęściej poleceniem uvicorn main:app --reload. Taki tryb jest wygodny podczas tworzenia projektu, ponieważ serwer automatycznie przeładowuje się po zmianach w kodzie. Po uruchomieniu aplikacja jest domyślnie dostępna pod lokalnym adresem w przeglądarce, co pozwala od razu testować endpointy i dokumentację.

Jak sprawdzić, czy endpointy FastAPI działają poprawnie?

Poprawność endpointów FastAPI można sprawdzić ręcznie albo za pomocą testów automatycznych. Najprostsze metody opisane w artykule to użycie przeglądarki, curl, Postmana lub wbudowanego interfejsu Swagger UI. Bardziej uporządkowane podejście daje pytest i TestClient. W praktyce warto zweryfikować:

  • kod statusu odpowiedzi,
  • format zwracanych danych,
  • zgodność odpowiedzi z oczekiwanym działaniem endpointu.
Gdzie znaleźć automatyczną dokumentację API w FastAPI?

Automatyczna dokumentacja API w FastAPI jest dostępna domyślnie pod adresem /docs. Framework generuje ją automatycznie na podstawie zdefiniowanych endpointów, parametrów i typów danych. Dodatkowo dostępna jest także wersja ReDoc pod adresem /redoc. To wygodne rozwiązanie, ponieważ pozwala jednocześnie przeglądać strukturę API i testować operacje bez ręcznego tworzenia dokumentacji.

Dlaczego FastAPI jest dobrym wyborem do tworzenia nowoczesnego REST API?

FastAPI jest dobrym wyborem do nowoczesnego REST API, ponieważ łączy wysoką wydajność, prostotę i wbudowane mechanizmy walidacji oraz dokumentacji. Artykuł pokazuje, że framework dobrze wpisuje się w pracę z Pythonem i stylem REST. Dodatkową zaletą jest wsparcie asynchroniczności, co ułatwia budowanie aplikacji backendowych, mikroserwisów i usług integracyjnych.

icon

Formularz kontaktowyContact form

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