FastAPI
Überblick
FastAPI ist ein modernes, leistungsstarkes Python-Webframework zum Erstellen von APIs. Es bietet automatische interaktive Dokumentation, Type-Hints-Validierung und Async-Unterstützung von Haus aus.
Schnellstart
Repository aus Vorlage erstellen
Gehen Sie in Ihrem Dashboard zum Tab Tools & Deployment. Klicken Sie auf "New Repository", wählen Sie die FastAPI-Vorlage aus dem Dropdown, geben Sie einen Repository-Namen und eine Subdomain ein und klicken Sie auf "Create Repository".
Ihr Repository klonen
git clone https://<git-server>/<username>/<repo-name>.git
cd <repo-name>
Abhängigkeiten installieren
pip install -r requirements.txt
Entwicklungsserver starten
uvicorn app.main:app --reload
Der Server läuft auf http://localhost:8000. Interaktive API-Dokumentation unter http://localhost:8000/docs.
Ihre Änderungen hochladen
git add .
git commit -m "Initial setup"
git push origin main
Lokale Entwicklung mit Docker
Wenn Sie Python nicht lokal installiert haben, können Sie Docker verwenden, um Ihre FastAPI-Anwendung auszuführen.
Befehle mit Docker ausführen
# Abhängigkeiten installieren
docker run --rm -v $(pwd):/app -w /app python:3.12 pip install -r requirements.txt
# Entwicklungsserver starten
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"
Datenbank-Konfiguration
Die NStrim-Plattform stellt Ihnen eine MySQL/MariaDB-Datenbank zur Verfügung. Konfigurieren Sie Ihre Verbindung in der .env-Datei oder direkt in Ihrem Datenbank-Konfigurationsmodul.
DATABASE_URL=mysql+pymysql://<username>:<password>@db.<session-domain>:3306/<username>
student01). Überprüfen Sie den Anmeldedaten-Bereich Ihres Dashboards für die genauen Werte.Projektstruktur
├── app/
│ ├── main.py # FastAPI-Anwendungs-Einstiegspunkt
│ ├── routers/ # Route-Module
│ ├── models/ # SQLAlchemy-Modelle
│ ├── schemas/ # Pydantic-Schemas
│ └── database.py # Datenbankverbindung
├── templates/ # Jinja2-Vorlagen
├── static/ # CSS, JS, Bilder
├── requirements.txt # Python-Abhängigkeiten
└── Dockerfile # Docker-Konfiguration
Häufige Aufgaben
API-Endpunkt erstellen
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}
SQLAlchemy verwenden
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)
Pydantic-Schema für Validierung
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
Nützliche Befehle
uvicorn app.main:app --reload
Entwicklungsserver mit Auto-Reload starten
pip install -r requirements.txt
Abhängigkeiten installieren
pip freeze > requirements.txt
Aktuelle Abhängigkeiten speichern
Fehlerbehebung
OperationalError: Can't connect to MySQL server
Ursache: Der Datenbank-Host ist falsch oder nicht erreichbar.
Lösung: Überprüfen Sie, ob DATABASE_URL mit dem Datenbank-Host aus Ihrem Dashboard übereinstimmt.
ModuleNotFoundError: No module named 'app'
Lösung: Stellen Sie sicher, dass Sie uvicorn vom Projektstammverzeichnis aus ausführen und dass app/__init__.py existiert.
422 Unprocessable Entity
Lösung: FastAPI validiert Anfragedaten automatisch. Überprüfen Sie den Antwortkörper für Details, welche Felder die Validierung nicht bestanden haben. Besuchen Sie /docs, um das erwartete Anfrageformat zu sehen.