From d710fac865bab1570435faeb8d258113479f1d47 Mon Sep 17 00:00:00 2001 From: Michael Date: Wed, 27 May 2026 15:50:25 +0200 Subject: [PATCH] Updated dokumentation.md --- dokumentation.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/dokumentation.md b/dokumentation.md index df6c175..f1592c2 100644 --- a/dokumentation.md +++ b/dokumentation.md @@ -186,6 +186,37 @@ Die `try_files`-Direktive ermöglicht Client-Side-Routing: Alle Pfade werden auf ``` +**API-Client** (`frontend/src/api/client.ts`): + +Der API-Client kapselt alle HTTP-Requests an das Backend in typisierte Funktionen. Er verwendet die nativ `fetch`-API und gibt die Antworten als TypeScript-Interfaces zurück: + +```typescript +const API_BASE = "/api"; // Relativer Pfad → wird vom NGINX Proxy weitergeleitet +``` + +| Funktion | HTTP-Methode | Endpoint | Beschreibung | +|----------|-------------|----------|--------------| +| `createPaste(content)` | POST | `/api/pastes` | Erstellt einen neuen Paste | +| `getPaste(id)` | GET | `/api/pastes/{id}` | Ruft einen Paste ab | +| `deletePaste(id, token)` | DELETE | `/api/pastes/{id}?token=...` | Löscht einen Paste (mit Token) | +| `listPastes(adminPassword)` | GET | `/api/admin/pastes` | Listet alle Pastes (Admin) | +| `adminDeletePaste(id, pw)` | DELETE | `/api/admin/pastes/{id}` | Löscht einen Paste (Admin) | + +Die Funktionen werden von den Page-Komponenten importiert und genutzt. Beispiel aus `HomePage.tsx`: + +```typescript +const result = await createPaste(content); +navigate(`/paste/${result.id}?token=${result.delete_token}`); +``` + +Die Admin-Funktionen senden das Passwort über den `X-Admin-Password` Header: + +```typescript +const res = await fetch(`${API_BASE}/admin/pastes`, { + headers: { "X-Admin-Password": adminPassword }, +}); +``` + ### 3.3 Backend (`backend/`) **Aufgabe**: Stellt die REST-API bereit und kommuniziert mit der Datenbank.