- .gitignore: .claude/docs, rules, commands tracken; settings.local weiter ignorieren - DOCUMENTATION.md: verbindliche Ablage functional/technical/working/issues - .claude/README.md: Agent-Einstieg; GITEA_ISSUES_INDEX aus MCP (Stand 2026-04-08) - Arbeitspapiere von docs/ nach .claude/docs/working/ verschoben - docs/MEMBERSHIP_SYSTEM.md als Stub; kanonisch technical/MEMBERSHIP_SYSTEM.md - CLAUDE.md Pflichtlektüre und Links angepasst; docs/README.md vereinfacht Made-with: Cursor
971 B
971 B
Add Endpoint
Füge einen neuen API-Endpoint zum Backend hinzu.
Template:
@app.get("/api/mein-endpoint")
def mein_endpoint(
limit: int = 100,
session: dict = Depends(require_auth) # ← IMMER als separater Parameter!
):
pid = session['profile_id']
with get_db() as conn:
rows = conn.execute(
"SELECT * FROM meine_tabelle WHERE profile_id=? LIMIT ?",
(pid, limit)
).fetchall()
return [r2d(r) for r in rows]
Regeln:
session: dict = Depends(require_auth)IMMER als letzter/separater Parameter- NIEMALS innerhalb von
Header(default=None, ...)einbetten - Profile-ID immer aus
session['profile_id']– nie aus Header - Admin-Endpoints:
session=Depends(require_admin) - Rate-Limiting für sensitive Endpoints:
@limiter.limit("5/minute")
Nach dem Endpoint:
api.js um neue Methode ergänzen:
meinEndpoint: (params) => req(`/mein-endpoint?limit=${params}`),