Vorlagen verwenden
FastAPI-fastkit bietet vorgefertigte Projektvorlagen, mit denen Sie schnell mit verschiedenen Tech-Stacks starten können.
Verfügbare Vorlagen
Prüfen Sie die verfügbaren Vorlagen mit dem Befehl list-templates:
$ fastkit list-templates
Available Templates
┌─────────────────────────┬───────────────────────────────────┐
│ fastapi-custom-response │ Async Item Management API with │
│ │ Custom Response System │
│ fastapi-dockerized │ Dockerized FastAPI Item │
│ │ Management API │
│ fastapi-empty │ No description │
│ fastapi-async-crud │ Async Item Management API Server │
│ fastapi-psql-orm │ Dockerized FastAPI Item │
│ │ Management API with PostgreSQL │
│ fastapi-default │ Simple FastAPI Project │
└─────────────────────────┴───────────────────────────────────┘
Beschreibungen der Vorlagen
1. fastapi-default
Einfaches FastAPI-Projekt
- Grundlegende FastAPI-Einrichtung mit essenziellen Funktionen
- Itemverwaltung mit Mock-Daten
- Ideal zum Lernen und für einfache APIs
- Enthält grundlegende CRUD-Operationen
Am besten für:
- FastAPI-Einsteiger
- Einfache Web-APIs
- Lernen und Prototyping
2. fastapi-async-crud
Asynchrone Item-Management-API
- Vollständig asynchrone FastAPI-Anwendung
- Erweiterte CRUD-Operationen mit async/await
- Bessere Leistung bei I/O-Operationen
- Mock-Datenspeicher mit asynchronen Mustern
Am besten für:
- Hochleistungsanwendungen
- I/O-intensive Operationen
- Moderne asynchrone Python-Entwicklung
3. fastapi-custom-response
Asynchrone Item-Management-API mit benutzerdefiniertem Antwortsystem
- Benutzerdefinierte Antwortmodelle und Formatierung
- Erweiterte Fehlerbehandlung
- Unterstützung für Paginierung
- Benutzerdefinierte HTTP-Statuscodes und Antworten
Am besten für:
- APIs, die bestimmte Antwortformate benötigen
- Erweiterte Anforderungen an die Fehlerbehandlung
- Benutzerdefinierte Geschäftslogik in Antworten
4. fastapi-dockerized
Dockerisierte FastAPI-Item-Management-API
- Vollständige Docker-Containerisierung
- Produktionsreife Deployment-Konfiguration
- Mehrstufige Docker-Builds
- Umgebungsbasierte Konfiguration
Am besten für:
- Produktionsdeployments
- Containerisierte Umgebungen
- DevOps- und CI/CD-Pipelines
5. fastapi-psql-orm
Dockerisierte FastAPI-Item-Management-API mit PostgreSQL
- PostgreSQL-Datenbankintegration
- SQLAlchemy-ORM mit Alembic-Migrationen
- Docker Compose für die lokale Entwicklung
- Vollständige CRUD-Operationen auf der Datenbank
Am besten für:
- Datenbankgetriebene Anwendungen
- Produktionsreife Datenspeicherung
- Komplexe Datenbeziehungen
6. fastapi-empty
Minimales FastAPI-Projekt
- Absolute Minimal-Einrichtung von FastAPI
- Keine vorgefertigten Funktionen
- Leere Leinwand für individuelle Entwicklung
Am besten für:
- Bei Null beginnen
- Minimale Abhängigkeiten
- Spezielle Architekturanforderungen
Ein Projekt aus einer Vorlage erstellen
Verwenden Sie den Befehl startdemo, um ein Projekt aus einer Vorlage zu erstellen:
$ fastkit startdemo
Enter the project name: my-blog-api
Enter the author name: John Doe
Enter the author email: john@example.com
Enter the project description: Blog API with PostgreSQL
Available Templates:
fastapi-default
┌─────────────┬──────────────────────┐
│ Description │ Simple FastAPI │
│ │ Project │
│ Stack │ FastAPI, Uvicorn │
│ Database │ Mock Data │
│ Features │ Basic CRUD │
└─────────────┴──────────────────────┘
fastapi-psql-orm
┌─────────────┬──────────────────────┐
│ Description │ Dockerized FastAPI │
│ │ Item Management API │
│ │ with PostgreSQL │
│ Stack │ FastAPI, PostgreSQL, │
│ │ SQLAlchemy, Docker │
│ Database │ PostgreSQL │
│ Features │ Full ORM, Migrations │
└─────────────┴──────────────────────┘
Select template (fastapi-default, fastapi-async-crud, fastapi-custom-response, fastapi-dockerized, fastapi-psql-orm, fastapi-empty): fastapi-psql-orm
Project Information
┌──────────────┬─────────────────────┐
│ Project Name │ my-blog-api │
│ Author │ John Doe │
│ Author Email │ john@example.com │
│ Description │ Blog API with │
│ │ PostgreSQL │
└──────────────┴─────────────────────┘
Template Dependencies
┌──────────────┬───────────────────┐
│ Dependency 1 │ fastapi │
│ Dependency 2 │ uvicorn │
│ Dependency 3 │ sqlalchemy │
│ Dependency 4 │ alembic │
│ Dependency 5 │ psycopg2-binary │
│ Dependency 6 │ python-dotenv │
│ Dependency 7 │ pytest │
└──────────────┴───────────────────┘
Available Package Managers:
Package Managers
┌────────┬────────────────────────────────────────────┐
│ PIP │ Standard Python package manager │
│ UV │ Fast Python package manager │
│ PDM │ Modern Python dependency management │
│ POETRY │ Python dependency management and packaging │
└────────┴────────────────────────────────────────────┘
Select package manager (pip, uv, pdm, poetry) [uv]: uv
Do you want to proceed with project creation? [y/N]: y
✨ FastAPI project 'my-blog-api' from 'fastapi-psql-orm' has been created successfully!
Funktionsvergleich der Vorlagen
| Funktion | Default | Async CRUD | Custom Response | Dockerized | PostgreSQL ORM | Empty |
|---|---|---|---|---|---|---|
| FastAPI-Basis | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Mock-Daten | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
| Async-Unterstützung | Basis | ✅ | ✅ | ✅ | ✅ | ❌ |
| Benutzerdefinierte Antworten | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Docker | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ |
| Datenbank | Mock | Mock | Mock | Mock | PostgreSQL | Keine |
| ORM | ❌ | ❌ | ❌ | ❌ | SQLAlchemy | ❌ |
| Migrationen | ❌ | ❌ | ❌ | ❌ | Alembic | ❌ |
| Testen | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| Am besten für | Lernen | Leistung | Benutzerdefinierte APIs | Produktion | Datenbank-Apps | Individuelles |
Vorlagenspezifische Einrichtung
fastapi-psql-orm verwenden
Diese Vorlage enthält eine vollständige PostgreSQL-Einrichtung. Nach der Erstellung:
- PostgreSQL mit Docker starten:
- Datenbankmigrationen ausführen:
- API-Server starten:
fastapi-dockerized verwenden
Diese Vorlage bietet vollständige Docker-Unterstützung:
- Docker-Image bauen:
- Container ausführen:
fastapi-custom-response verwenden
Diese Vorlage enthält fortgeschrittene Antwortbehandlung:
- Benutzerdefinierte Antwortmodelle:
from src.helper.pagination import PaginatedResponse
from src.schemas.base import StandardResponse
@router.get("/", response_model=PaginatedResponse[Item])
def read_items(skip: int = 0, limit: int = 10):
items = items_crud.get_multi(skip=skip, limit=limit)
total = items_crud.count()
return PaginatedResponse(
data=items,
total=total,
page=skip // limit + 1,
pages=(total + limit - 1) // limit
)
@router.post("/", response_model=StandardResponse[Item])
def create_item(item: ItemCreate):
new_item = items_crud.create(item)
return StandardResponse(
data=new_item,
message="Item created successfully",
status_code=201
)
- Erweiterte Fehlerbehandlung:
from src.helper.exceptions import ItemNotFoundError, ValidationError
@router.get("/{item_id}", response_model=StandardResponse[Item])
def read_item(item_id: int):
try:
item = items_crud.get(item_id)
return StandardResponse(data=item)
except ItemNotFoundError:
raise HTTPException(
status_code=404,
detail=f"Item with id {item_id} not found"
)
Projektstruktur der Vorlagen
Jede Vorlage folgt einer konsistenten, aber angepassten Struktur:
Struktur von fastapi-default
my-project/
├── src/
│ ├── main.py
│ ├── core/config.py
│ ├── api/
│ │ ├── api.py
│ │ └── routes/items.py
│ ├── crud/items.py
│ ├── schemas/items.py
│ └── mocks/mock_items.json
├── tests/
├── scripts/
└── requirements.txt
Struktur von fastapi-psql-orm
my-project/
├── src/
│ ├── main.py
│ ├── core/
│ │ ├── config.py
│ │ └── db.py
│ ├── api/
│ │ ├── api.py
│ │ ├── deps.py
│ │ └── routes/items.py
│ ├── crud/items.py
│ ├── schemas/items.py
│ ├── alembic/
│ │ ├── env.py
│ │ └── versions/
│ └── utils/
├── tests/
├── scripts/
├── docker-compose.yml
├── Dockerfile
├── alembic.ini
└── requirements.txt
Vorlagen anpassen
Nachdem Sie ein Projekt aus einer Vorlage erstellt haben, können Sie es anpassen:
1. Neue Routen hinzufügen
2. Konfiguration anpassen
Bearbeiten Sie src/core/config.py nach Ihren Bedürfnissen:
from pydantic_settings import BaseSettings
class Settings(BaseSettings):
PROJECT_NAME: str = "My Blog API"
VERSION: str = "1.0.0"
API_V1_STR: str = "/api/v1"
# Database settings (for PostgreSQL templates)
DATABASE_URL: str = "postgresql://user:password@localhost/dbname"
# Security settings
SECRET_KEY: str = "your-secret-key-here"
ACCESS_TOKEN_EXPIRE_MINUTES: int = 30
class Config:
env_file = ".env"
settings = Settings()
3. Umgebungsvariablen hinzufügen
Erstellen Sie eine .env-Datei im Projekt-Stammverzeichnis:
# .env
PROJECT_NAME=My Blog API
VERSION=1.0.0
DEBUG=True
# Database (for PostgreSQL templates)
DATABASE_URL=postgresql://user:password@localhost:5432/myblogdb
POSTGRES_USER=user
POSTGRES_PASSWORD=password
POSTGRES_DB=myblogdb
# Security
SECRET_KEY=your-super-secret-key-here
ACCESS_TOKEN_EXPIRE_MINUTES=30
Vorlagen testen
Jede Vorlage wird mit vorkonfigurierten Tests ausgeliefert:
$ cd my-blog-api
$ source .venv/bin/activate
$ python -m pytest
======================== test session starts ========================
tests/test_items.py::test_create_item PASSED
tests/test_items.py::test_read_items PASSED
tests/test_items.py::test_read_item PASSED
tests/test_items.py::test_update_item PASSED
tests/test_items.py::test_delete_item PASSED
======================== 5 passed in 0.23s ========================
Entwicklungs-Workflow mit Vorlagen
1. Die passende Vorlage wählen
- Lernen / einfache APIs:
fastapi-default - Hohe Leistung:
fastapi-async-crud - Benutzerdefinierte Antwortformate:
fastapi-custom-response - Produktions-Deployment:
fastapi-dockerized - Datenbankanwendungen:
fastapi-psql-orm - Eigene Architektur:
fastapi-empty
2. Erstellen und Einrichten
3. Entwicklung
4. Deployment
Für die Produktionsvorlagen (fastapi-dockerized, fastapi-psql-orm):
Best Practices
1. Vorlagen mit Bedacht wählen
- Beginnen Sie mit einfacheren Vorlagen zum Lernen
- Nutzen Sie Datenbankvorlagen für datengetriebene Apps
- Verwenden Sie Docker-Vorlagen für Produktionsdeployments
2. Umgebungsverwaltung
- Verwenden Sie immer
.env-Dateien für die Konfiguration - Committen Sie niemals sensible Daten in die Versionsverwaltung
- Nutzen Sie unterschiedliche Umgebungen für Entwicklung/Produktion
3. Anpassungsstrategie
- Fügen Sie neue Routen mit
fastkit addroutehinzu - Passen Sie vorhandenen Code an Ihre Geschäftslogik an
- Halten Sie die Projektstruktur übersichtlich
4. Testen
- Führen Sie Tests während der Entwicklung regelmäßig aus
- Ergänzen Sie Tests für neu implementierte Funktionen
- Nutzen Sie die mitgelieferte Teststruktur als Leitfaden
Fehlerbehebung
Probleme mit der Datenbankverbindung (PostgreSQL-Vorlagen)
Wenn Sie keine Verbindung zu PostgreSQL herstellen können:
- Prüfen Sie, ob Docker läuft:
- PostgreSQL-Container überprüfen:
- Umgebungsvariablen prüfen:
Fehlgeschlagene Docker-Builds
Wenn der Docker-Build fehlschlägt:
- Syntax des Dockerfile prüfen
- Sicherstellen, dass alle Dateien vorhanden sind
- Prüfen, ob der Docker-Daemon läuft
Fehlende Abhängigkeiten
Wenn Sie Import-Fehler erhalten:
-
Aktivieren Sie die virtuelle Umgebung:
-
Abhängigkeiten installieren:
Nächste Schritte
Jetzt, da Sie die Vorlagen verstehen:
- Ihr erstes Projekt: bauen Sie eine vollständige Anwendung
- Routen hinzufügen: erweitern Sie Ihr vorlagenbasiertes Projekt
- CLI-Referenz: meistern Sie alle verfügbaren Befehle
Tipps zu Vorlagen
- Vorlagen sind hervorragende Ausgangspunkte, keine fertigen Lösungen
- Passen Sie Vorlagen an Ihre spezifischen Anforderungen an
- Studieren Sie den Code der Vorlagen, um FastAPI-Best-Practices zu lernen
- Nutzen Sie Versionsverwaltung, um Ihre Anpassungen nachzuhalten