81e40e70fc
### 1.1 OpenAPI-Dokumentation implementieren - Swagger/OpenAPI in bestehenden Ktor-Diensten integrieren - Zentrale API-Dokumentationsseite im API-Gateway erstellen - CI/CD-Pipeline um automatische API-Dokumentationsgenerierung erweitern - Entwickler-Guidelines für API-Dokumentation erstellen
7.0 KiB
7.0 KiB
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 /- API Gateway InformationGET /health- Gesundheitsprüfung des ServicesGET /docs- Zentrale API-DokumentationsseiteGET /api- Weiterleitung zur zentralen API-DokumentationsseiteGET /api/json- API-Informationen im JSON-Format
Authentication Context (/auth/*)
POST /auth/login- BenutzeranmeldungPOST /auth/register- BenutzerregistrierungGET /auth/profile- Benutzerprofil abrufen
Master Data Context (/api/masterdata/*)
GET /api/masterdata/countries- Alle Länder abrufenPOST /api/masterdata/countries- Neues Land erstellenGET /api/masterdata/countries/{id}- Land nach ID abrufenPUT /api/masterdata/countries/{id}- Land aktualisierenDELETE /api/masterdata/countries/{id}- Land löschen
Horse Registry Context (/api/horses/*)
GET /api/horses- Alle Pferde abrufenGET /api/horses/fei-registered- FEI-registrierte Pferde abrufenGET /api/horses/stats- Pferdestatistiken abrufenPOST /api/horses/stats- Neues Pferd registrierenGET /api/horses/{id}- Pferd nach ID abrufen
Event Management Context (/api/events/*)
GET /api/events- Alle Veranstaltungen abrufenGET /api/events/stats- Veranstaltungsstatistiken abrufenPOST /api/events/stats- Neue Veranstaltung erstellen
Schema-Definitionen
LoginRequest
LoginRequest:
type: object
properties:
email:
type: string
format: email
password:
type: string
format: password
required:
- email
- password
UserProfileResponse
UserProfileResponse:
type: object
properties:
id:
type: string
format: uuid
email:
type: string
format: email
firstName:
type: string
lastName:
type: string
phoneNumber:
type: string
roles:
type: array
items:
type: string
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
CountryResponse
CountryResponse:
type: object
properties:
id:
type: string
format: uuid
name:
type: string
isoCode:
type: string
active:
type: boolean
HorseResponse
HorseResponse:
type: object
properties:
id:
type: string
format: uuid
name:
type: string
birthYear:
type: integer
breed:
type: string
color:
type: string
gender:
type: string
enum: [STALLION, MARE, GELDING]
feiRegistered:
type: boolean
ownerId:
type: string
format: uuid
active:
type: boolean
EventResponse
EventResponse:
type: object
properties:
id:
type: string
format: uuid
name:
type: string
startDate:
type: string
format: date
endDate:
type: string
format: date
location:
type: string
organizerId:
type: string
format: uuid
description:
type: string
status:
type: string
enum: [DRAFT, PUBLISHED, CANCELLED, COMPLETED]
ErrorResponse
ErrorResponse:
type: object
properties:
success:
type: boolean
message:
type: string
errors:
type: array
items:
type: object
properties:
field:
type: string
message:
type: string
timestamp:
type: string
format: date-time
Verwendung
1. Server starten
./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:
api-gateway/src/jvmMain/resources/openapi/documentation.yaml
Beispiel für neuen Endpunkt:
/api/events/categories:
get:
tags:
- Event Management
summary: Get Event Categories
description: Returns a list of all event categories
operationId: getEventCategories
responses:
'200':
description: Successful operation
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/EventCategoryResponse'
Technische Details
Dependencies
io.ktor:ktor-server-openapi:3.1.2io.ktor:ktor-server-swagger:3.1.2
Konfiguration
Die Swagger/OpenAPI-Konfiguration befindet sich in:
api-gateway/src/jvmMain/kotlin/at/mocode/gateway/config/OpenApiConfig.kt- Konfiguration der OpenAPI und Swagger UI Endpunkteapi-gateway/src/jvmMain/kotlin/at/mocode/gateway/module.kt- Integration der OpenAPI-Konfiguration in die Anwendungapi-gateway/src/jvmMain/resources/openapi/documentation.yaml- OpenAPI-Spezifikation im YAML-Format
Implementierte Funktionen
- Vollständige OpenAPI 3.0.3 Spezifikation
- Interaktive Swagger UI für API-Exploration
- Dokumentation aller API-Endpunkte aus allen Bounded Contexts
- Authentifizierung mit JWT-Token
- Beispiel-Requests und -Responses für alle Endpunkte
- Schema-Definitionen für alle Datenmodelle
Aktueller Status
✅ Implementiert:
- OpenAPI-Spezifikation für alle Bounded Contexts
- Swagger UI für interaktive API-Exploration
- JWT-Authentifizierung in der OpenAPI-Spezifikation
- Produktions- und Entwicklungs-URLs in der Spezifikation
- Vollständige Dokumentation aller Endpunkte und Datenmodelle
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.yamlim 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.yamlDatei - Starten Sie den Server neu nach Änderungen