Projektarbeit-MYP/backend/COMMON_ERRORS.md

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