(fix) Swagger/OpenAPI-Dokumentation implementieren
This commit is contained in:
@@ -0,0 +1,160 @@
|
||||
# Swagger/OpenAPI Documentation
|
||||
|
||||
## Übersicht
|
||||
|
||||
Die Meldestelle API verfügt jetzt über eine vollständige Swagger/OpenAPI-Dokumentation, die eine interaktive Benutzeroberfläche zur Erkundung und Testung der API-Endpunkte bietet.
|
||||
|
||||
## Zugriff auf die Dokumentation
|
||||
|
||||
### Swagger UI
|
||||
- **URL**: `http://localhost:8080/swagger`
|
||||
- **Beschreibung**: Interaktive Benutzeroberfläche zur Erkundung der API
|
||||
- **Features**:
|
||||
- Vollständige API-Dokumentation
|
||||
- Interaktive Testmöglichkeiten
|
||||
- Beispiel-Requests und -Responses
|
||||
- Schema-Definitionen
|
||||
|
||||
### OpenAPI Specification
|
||||
- **URL**: `http://localhost:8080/openapi`
|
||||
- **Beschreibung**: Raw OpenAPI 3.0.3 Spezifikation im YAML-Format
|
||||
- **Verwendung**: Kann für Code-Generierung oder Import in andere Tools verwendet werden
|
||||
|
||||
## Dokumentierte Endpunkte
|
||||
|
||||
### Basis-Endpunkte
|
||||
- `GET /health` - Gesundheitsprüfung des Services
|
||||
- `GET /api` - API-Informationen
|
||||
|
||||
### Person Management (`/api/persons`)
|
||||
- `GET /api/persons` - Alle Personen abrufen
|
||||
- `POST /api/persons` - Neue Person erstellen
|
||||
- `GET /api/persons/{id}` - Person nach UUID abrufen
|
||||
- `PUT /api/persons/{id}` - Person aktualisieren
|
||||
- `DELETE /api/persons/{id}` - Person löschen
|
||||
- `GET /api/persons/oeps/{oepsSatzNr}` - Person nach OEPS-Nummer abrufen
|
||||
- `GET /api/persons/search?q={query}` - Personen suchen
|
||||
- `GET /api/persons/verein/{vereinId}` - Personen nach Verein-ID abrufen
|
||||
|
||||
## Schema-Definitionen
|
||||
|
||||
### Person
|
||||
```yaml
|
||||
Person:
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
type: string
|
||||
format: uuid
|
||||
vorname:
|
||||
type: string
|
||||
nachname:
|
||||
type: string
|
||||
geburtsdatum:
|
||||
type: string
|
||||
format: date
|
||||
oepsSatzNr:
|
||||
type: string
|
||||
vereinId:
|
||||
type: string
|
||||
format: uuid
|
||||
email:
|
||||
type: string
|
||||
format: email
|
||||
telefon:
|
||||
type: string
|
||||
required:
|
||||
- vorname
|
||||
- nachname
|
||||
```
|
||||
|
||||
### Error
|
||||
```yaml
|
||||
Error:
|
||||
type: object
|
||||
properties:
|
||||
error:
|
||||
type: string
|
||||
required:
|
||||
- error
|
||||
```
|
||||
|
||||
## Verwendung
|
||||
|
||||
### 1. Server starten
|
||||
```bash
|
||||
./gradlew :server:run
|
||||
```
|
||||
|
||||
### 2. Swagger UI öffnen
|
||||
Navigieren Sie zu `http://localhost:8080/swagger` in Ihrem Browser.
|
||||
|
||||
### 3. API erkunden
|
||||
- Klicken Sie auf die verschiedenen Endpunkte, um Details zu sehen
|
||||
- Verwenden Sie "Try it out" um Requests direkt zu testen
|
||||
- Sehen Sie sich die Beispiel-Responses an
|
||||
|
||||
### 4. OpenAPI Spec herunterladen
|
||||
Besuchen Sie `http://localhost:8080/openapi` um die vollständige OpenAPI-Spezifikation zu erhalten.
|
||||
|
||||
## Erweiterung der Dokumentation
|
||||
|
||||
### Neue Endpunkte hinzufügen
|
||||
Um neue API-Endpunkte zu dokumentieren, erweitern Sie die Datei:
|
||||
`server/src/main/resources/openapi.yaml`
|
||||
|
||||
### Beispiel für neuen Endpunkt:
|
||||
```yaml
|
||||
/api/vereine:
|
||||
get:
|
||||
summary: Get all clubs
|
||||
description: Retrieve a list of all clubs
|
||||
tags:
|
||||
- Clubs
|
||||
responses:
|
||||
'200':
|
||||
description: List of clubs
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/Verein'
|
||||
```
|
||||
|
||||
## Technische Details
|
||||
|
||||
### Dependencies
|
||||
- `io.ktor:ktor-server-openapi:3.1.2`
|
||||
- `io.ktor:ktor-server-swagger:3.1.2`
|
||||
|
||||
### Konfiguration
|
||||
Die Swagger/OpenAPI-Konfiguration befindet sich in:
|
||||
- `server/src/main/kotlin/at/mocode/plugins/Routing.kt`
|
||||
- `server/src/main/resources/openapi.yaml`
|
||||
|
||||
### Tests
|
||||
Automatisierte Tests für die Swagger-Funktionalität:
|
||||
- `server/src/test/kotlin/at/mocode/SwaggerTest.kt`
|
||||
|
||||
## Nächste Schritte
|
||||
|
||||
1. **Erweitern Sie die Dokumentation** für weitere API-Endpunkte (Vereine, Turniere, etc.)
|
||||
2. **Fügen Sie Authentifizierung hinzu** zur OpenAPI-Spezifikation wenn implementiert
|
||||
3. **Konfigurieren Sie Produktions-URLs** in der OpenAPI-Spezifikation
|
||||
4. **Implementieren Sie API-Versionierung** in der Dokumentation
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Swagger UI lädt nicht
|
||||
- Überprüfen Sie, ob der Server läuft
|
||||
- Stellen Sie sicher, dass Port 8080 verfügbar ist
|
||||
- Prüfen Sie die Logs auf Fehler
|
||||
|
||||
### OpenAPI Spec ist leer
|
||||
- Überprüfen Sie, ob `openapi.yaml` im Classpath verfügbar ist
|
||||
- Stellen Sie sicher, dass die Datei gültiges YAML enthält
|
||||
|
||||
### API-Endpunkte fehlen in der Dokumentation
|
||||
- Erweitern Sie die `openapi.yaml` Datei
|
||||
- Starten Sie den Server neu nach Änderungen
|
||||
Reference in New Issue
Block a user