FastAPI

Vollständige Bereitstellungsanleitung für FastAPI auf NStrim

Ü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.

Bevor Sie beginnen
Stellen Sie sicher, dass Ihr Dashboard geöffnet ist - Sie benötigen die dort angezeigten Git-Anmeldedaten. Diese Vorlage enthält FastAPI, Uvicorn, SQLAlchemy ORM, PyMySQL-Treiber, Pydantic und Jinja2-Templating.

Schnellstart

1

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".

2

Ihr Repository klonen

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

Abhängigkeiten installieren

pip install -r requirements.txt
4

Entwicklungsserver starten

uvicorn app.main:app --reload

Der Server läuft auf http://localhost:8000. Interaktive API-Dokumentation unter http://localhost:8000/docs.

5

Ihre Änderungen hochladen

git add .
git commit -m "Initial setup"
git push origin main
Jeder Push zu Git stellt Ihre Anwendung automatisch bereit. Überprüfen Sie Ihre Modul-Arbeits-URL im Dashboard, um Ihre Live-Site zu sehen.

Lokale Entwicklung mit Docker

Wenn Sie Python nicht lokal installiert haben, können Sie Docker verwenden, um Ihre FastAPI-Anwendung auszuführen.

Was ist Docker?
Docker erstellt isolierte "Container" mit der gesamten Software, die Sie benötigen (Python, pip), ohne diese auf Ihrem Computer zu installieren.

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>
Wichtig
Ihr Datenbankname und Benutzername sind in der Regel identisch mit Ihrem Dashboard-Benutzernamen (z.B. 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.

Bereitstellungs-Workflow

Code-Änderung git push pip install Live!
Weitere Informationen finden Sie in der offiziellen FastAPI Dokumentation.