Przegląd

FastAPI to nowoczesny, wysokowydajny framework webowy w Pythonie do budowania API. Oferuje automatyczną interaktywną dokumentację, walidację za pomocą type hints oraz wbudowane wsparcie dla async.

Zanim zaczniesz
Upewnij się, że masz otwarty pulpit – będą ci potrzebne wyświetlone tam dane logowania do Git. Ten szablon zawiera FastAPI, Uvicorn, SQLAlchemy ORM, sterownik PyMySQL, Pydantic oraz silnik szablonów Jinja2.

Pierwsze kroki

1

Utwórz repozytorium z szablonu

Na pulpicie przejdź do zakładki Tools & Deployment. Kliknij przycisk "New Repository", wybierz szablon FastAPI z listy rozwijanej, wpisz nazwę repozytorium i subdomenę, a następnie kliknij "Create Repository".

2

Sklonuj repozytorium

git clone https://<git-server>/<username>/<repo-name>.git
cd <repo-name>
3

Zainstaluj zależności

pip install -r requirements.txt
4

Uruchom serwer deweloperski

uvicorn app.main:app --reload

Serwer działa pod adresem http://localhost:8000. Interaktywna dokumentacja API: http://localhost:8000/docs.

5

Wypchnij swoje zmiany

git add .
git commit -m "Initial setup"
git push origin main
Każde wypchnięcie do Git automatycznie wdraża twoją aplikację. Sprawdź adres Module Work URL na pulpicie, aby zobaczyć działającą stronę.

Lokalny rozwój z Dockerem

Jeśli nie masz lokalnie zainstalowanego Pythona, możesz użyć Dockera, aby uruchomić aplikację FastAPI.

Czym jest Docker?
Docker tworzy izolowane "kontenery" zawierające całe potrzebne oprogramowanie (Python, pip) bez instalowania go na twoim komputerze.

Uruchamianie komend z Dockerem

# Zainstaluj zależności
docker run --rm -v $(pwd):/app -w /app python:3.12 pip install -r requirements.txt

# Uruchom serwer deweloperski
docker run --rm -v $(pwd):/app -w /app -p 8000:8000 python:3.12 sh -c "pip install -r requirements.txt && uvicorn app.main:app --host 0.0.0.0 --reload"

Konfiguracja bazy danych

Platforma NStrim udostępnia bazę danych MySQL/MariaDB. Skonfiguruj połączenie w pliku .env lub bezpośrednio w module konfiguracji bazy danych.

DATABASE_URL=mysql+pymysql://<username>:<password>@db.<session-domain>:3306/<username>
Ważne
Nazwa bazy danych i nazwa użytkownika są zwykle takie same jak twoja nazwa użytkownika z pulpitu (np. student01). Sprawdź sekcję danych logowania na pulpicie, aby uzyskać dokładne wartości.

Struktura projektu

├── app/
│   ├── main.py                # Punkt wejścia aplikacji FastAPI
│   ├── routers/               # Moduły tras
│   ├── models/                # Modele SQLAlchemy
│   ├── schemas/               # Schematy Pydantic
│   └── database.py            # Połączenie z bazą danych
├── templates/                 # Szablony Jinja2
├── static/                    # CSS, JS, obrazy
├── requirements.txt           # Zależności Python
└── Dockerfile                 # Konfiguracja Docker
        

Typowe zadania

Tworzenie endpointu API

from fastapi import APIRouter

router = APIRouter()

@router.get("/users")
async def get_users():
    return [{"name": "Alice"}, {"name": "Bob"}]

@router.post("/users")
async def create_user(name: str, email: str):
    return {"name": name, "email": email}

Korzystanie z SQLAlchemy

from sqlalchemy import Column, Integer, String
from app.database import Base

class User(Base):
    __tablename__ = "users"

    id = Column(Integer, primary_key=True, index=True)
    name = Column(String(100))
    email = Column(String(255), unique=True)

Schemat Pydantic do walidacji

from pydantic import BaseModel

class UserCreate(BaseModel):
    name: str
    email: str

class UserResponse(BaseModel):
    id: int
    name: str
    email: str

    class Config:
        from_attributes = True

Przydatne komendy

uvicorn app.main:app --reload Uruchom serwer dev z auto-reload
pip install -r requirements.txt Zainstaluj zależności
pip freeze > requirements.txt Zapisz aktualne zależności

Rozwiązywanie problemów

OperationalError: Can't connect to MySQL server

Przyczyna: Host bazy danych jest nieprawidłowy lub niedostępny.

Rozwiązanie: Sprawdź, czy DATABASE_URL odpowiada hostowi bazy danych z twojego pulpitu.

ModuleNotFoundError: No module named 'app'

Rozwiązanie: Upewnij się, że uruchamiasz uvicorn z głównego katalogu projektu i że plik app/__init__.py istnieje.

422 Unprocessable Entity

Rozwiązanie: FastAPI automatycznie waliduje dane żądania. Sprawdź treść odpowiedzi, aby zobaczyć szczegóły, które pola nie przeszły walidacji. Odwiedź /docs, aby zobaczyć oczekiwany format żądania.

Proces wdrażania

Zmiana kodu git push pip install Live!
Aby uzyskać więcej informacji, odwiedź oficjalną Dokumentację FastAPI.