3.6 KiB
Häufige Fehler und Lösungen
API-Route-Fehler
1. Blueprint nicht registriert
Problem: API-Blueprint wird nicht registriert, führt zu 404-Fehlern Lösung: Blueprint in app.py importieren und registrieren:
from blueprints.api import api_bp
app.register_blueprint(api_bp)
2. Fehlende CSRF-Token bei POST-Requests
Problem: CSRF-Validierung schlägt fehl Lösung: CSRF-Token in Templates einbinden oder API-Routen von CSRF befreien
3. Database Session nicht geschlossen
Problem: Database connections leak Lösung: Immer try/finally verwenden:
db_session = get_db_session()
try:
# Database operations
pass
finally:
db_session.close()
4. Fehlende Authentifizierung
Problem: @login_required decorator fehlt Lösung: Alle geschützten Routen mit @login_required versehen
5. Falsche JSON-Response-Struktur
Problem: Frontend erwartet andere Datenstruktur Lösung: Konsistente API-Response-Struktur verwenden:
return jsonify({
"success": True/False,
"data": {...},
"error": "error message" # nur bei Fehlern
})
Datenbankfehler
1. Relationship not loaded
Problem: Lazy loading von Relationships Lösung: Eager loading verwenden:
from sqlalchemy.orm import joinedload
jobs = session.query(Job).options(joinedload(Job.user)).all()
2. Session closed before accessing relationships
Problem: Zugriff auf Relationships nach Session.close() Lösung: Alle benötigten Daten vor Session.close() laden
Logging-Fehler
1. Logger nicht initialisiert
Problem: Logging funktioniert nicht Lösung: Logger korrekt initialisieren:
from utils.logging_config import get_logger
logger = get_logger("component_name")
File-Upload-Fehler
1. Upload-Ordner existiert nicht
Problem: FileNotFoundError beim Upload Lösung: Ordner erstellen:
os.makedirs(upload_folder, exist_ok=True)
2. Unsichere Dateinamen
Problem: Path traversal vulnerability Lösung: secure_filename() verwenden:
from werkzeug.utils import secure_filename
filename = secure_filename(file.filename)
Frontend-Integration-Fehler
1. CORS-Probleme
Problem: Cross-Origin-Requests werden blockiert Lösung: CORS-Headers setzen oder Flask-CORS verwenden
2. Inkonsistente API-Endpunkte
Problem: Frontend ruft nicht existierende Endpunkte auf Lösung: Systematische Überprüfung aller Frontend-API-Calls
3. Fehlende Error-Handling
Problem: Frontend kann Fehler nicht verarbeiten Lösung: Konsistente Error-Response-Struktur implementieren
4. Admin-Dashboard-Fehler
Problem: Admin-Dashboard API-Routen fehlen Lösung: Vollständige Admin-API implementieren:
@app.route("/api/admin/users/create", methods=["POST"])
@login_required
def api_admin_create_user():
if not current_user.is_admin:
return jsonify({"error": "Keine Berechtigung"}), 403
# Implementation...
5. Fehlende Berechtigungsprüfung
Problem: Admin-Routen ohne Berechtigungsprüfung Lösung: Immer Admin-Check einbauen:
if not current_user.is_admin:
return jsonify({"error": "Keine Berechtigung"}), 403
Performance-Probleme
1. N+1 Query Problem
Problem: Zu viele Datenbankabfragen Lösung: Eager loading oder batch loading verwenden
2. Fehlende Indizes
Problem: Langsame Datenbankabfragen Lösung: Indizes auf häufig abgefragte Spalten erstellen
3. Große Response-Größen
Problem: Langsame API-Responses Lösung: Pagination und Feldfilterung implementieren