EMZETT.
Login

OpenAPI und Swagger: APIs dokumentieren und testen

Kurz: OpenAPI beschreibt eine REST-Schnittstelle maschinenlesbar in YAML oder JSON; daraus entstehen Dokumentation, Testwerkzeuge und sogar fertiger Client-Code.

Genauer: Wer eine API anbietet, muss sagen, welche Endpunkte es gibt, welche Parameter sie erwarten und was sie zurückgeben. Die OpenAPI-Spezifikation (früher Swagger) legt dafür ein Standardformat fest. Werkzeuge wie Swagger UI, Redoc und Postman lesen es.

Im Detail

Beispiel

openapi: 3.0.3
info:
  title: Aufgaben-API
  version: 1.0.0
paths:
  /aufgaben:
    get:
      summary: Alle Aufgaben holen
      responses:
        '200':
          description: Liste
          content:
            application/json:
              schema:
                type: array
                items: { $ref: '#/components/schemas/Aufgabe' }
components:
  schemas:
    Aufgabe:
      type: object
      required: [id, titel]
      properties:
        id: { type: integer }
        titel: { type: string }
        erledigt: { type: boolean }

Nutzen

  • Interaktive Dokumentation: In Swagger UI kann man Anfragen direkt ausprobieren.
  • Code-Generierung: Client-Bibliotheken und Server-Gerüste in vielen Sprachen.
  • Validierung von Anfragen und Antworten.
  • Mock-Server für Frontend-Entwicklung vor dem Backend.
  • Verträge: Frontend und Backend einigen sich auf eine Spezifikation (Contract First).
  • Tests, die prüfen, ob die API der Beschreibung entspricht.

Zwei Wege

Contract First: Erst die Spezifikation schreiben, dann implementieren. Code First: Aus Annotationen oder Typen im Code wird die Spezifikation erzeugt (zum Beispiel FastAPI, Spring, NestJS). Wichtig ist, dass Beschreibung und Code nicht auseinanderlaufen: Prüfe im Build, ob die Spezifikation aktuell ist.

Gute Praxis

Beschreibe Fehlerantworten (400, 401, 404, 500) und deren Format, gib Beispiele an, nutze wiederverwendbare Schemas, dokumentiere Authentifizierung (Bearer, API-Key, OAuth) und Versionierung. Veröffentliche keine internen Endpunkte oder Beispieldaten mit echten personenbezogenen Daten.

Siehe auch: REST-API-Design, API-Versionierung, Dateiformate (YAML, JSON u. a.), README-Datei