Skip to content
IRC-Coding IRC-Coding
OpenAPI Swagger API Dokumentation Codegenerierung API First Redoc

OpenAPI und Swagger für API-Dokumentation: Spezifikationen, Tools und Best Practices

Lerne OpenAPI und Swagger für API-Dokumentation: Spezifikation schreiben, Endpunkte, Schemas, Codegenerierung und interaktive Dokumentation.

S

schutzgeist

2 min read
OpenAPI und Swagger für API-Dokumentation: Spezifikationen, Tools und Best Practices

OpenAPI und Swagger für API-Dokumentation

OpenAPI ist der Standard für die maschinenlesbare Beschreibung von REST APIs und bildet die Grundlage für interaktive Dokumentation, Mock-Server und Codegenerierung.

Kompakte Beschreibung

OpenAPI ist ein Spezifikationsformat für REST APIs, das Endpunkte, Methoden, Parameter, Request- und Response-Schemas, Statuscodes, Fehlerformate und Sicherheitsmechanismen beschreibt. Es wird meist in YAML oder JSON geschrieben und dient als Single Source of Truth für Entwickler, Tester, Client-Generatoren und Dokumentation. Swagger ist ein historischer Name und bezeichnet heute eine Reihe von Tools rund um OpenAPI, darunter Swagger UI, Swagger Editor und Swagger Codegen. OpenAPI ermöglicht API First Design, automatisierte Tests und die Erstellung von interaktiven API-Dokumentationen. Eine gute OpenAPI-Spezifikation ist vollständig, konsistent und mit Beispielen angereichert, sodass Nutzer die API verstehen und ausprobieren können, ohne den Code lesen zu müssen.

Wichtige Komponenten

OpenAPI Version

OpenAPI wird in Versionen 2.0, 3.0 und 3.1 unterstützt. Version 3.0 und 3.1 bieten mehr Flexibilität als 2.0, unter anderem bei Request- und Response-Definitionen, Links und Callbacks. Du solltest bei Neuprojekten eine aktuelle Version verwenden und Ältere nur aus Kompatibilitätsgründen pflegen.

Info und Metadaten

Der info-Block enthält grundlegende Angaben wie Titel, Version, Beschreibung und Kontaktinformationen. Diese Metadaten sind wichtig für die Identifikation der API und die automatisierte Dokumentation.

Server URLs

Server-URLs definieren, unter welchen Adressen die API erreichbar ist. Du kannst mehrere Umgebungen wie Development, Staging und Production angeben. Variablen ermöglichen es, Teile der URL dynamisch zu gestalten.

Paths und Operationen

Paths beschreiben die Endpunkte der API. Jeder Path kann mehrere Operationen enthalten, beispielsweise get, post, put, delete, patch. Jede Operation umfasst Summary, Description, Tags, Parameter, Request Body und Responses.

Components und Schemas

Components enthalten wiederverwendbare Definitionen wie Schemas, Parameters, Responses, Headers und Security Schemas. Schemas definieren die Datenstruktur von Requests und Responses mit Typen, Pflichtfeldern, Formaten und Beispielen.

Parameter

Parameter können in Path, Query, Header oder Cookie übertragen werden. Sie werden mit Name, Typ, Format, Required und Description definiert. Beispiele und Validierungsregeln wie minLength oder pattern verbessern die Qualität.

Request Body

Der Request Body beschreibt die Daten, die der Client bei POST, PUT oder PATCH senden muss. Er referenziert meist ein Schema und kann mehrere Content-Types wie application/json oder application/xml unterstützen.

Responses

Responses definieren die möglichen Antworten einer Operation. Jeder Statuscode wird mit Beschreibung, Content-Type und Schema beschrieben. Auch Fehlerantworten wie 400 oder 404 sollten vollständig dokumentiert sein.

Security Schemas

Security Schemas beschreiben, wie die API abgesichert ist. Typische Verfahren sind HTTP Basic, Bearer Token, OAuth2 und API Keys. Die Schemas werden in den Components definiert und in den Operationen referenziert.

Swagger UI und Redoc

Swagger UI und Redoc sind Tools, die aus einer OpenAPI-Spezifikation eine interaktive HTML-Dokumentation erzeugen. Swagger UI erlaubt das direkte Ausprobieren von Endpunkten im Browser, Redoc legt besonderen Wert auf ansprechende Darstellung und Lesbarkeit.

Codegenerierung

OpenAPI Generator erzeugt Client- und Server-Code aus der Spezifikation. Das beschleunigt die Entwicklung, reduziert Fehler und sorgt dafür, dass Client und Server auf demselben Vertrag basieren. Viele Programmiersprachen und Frameworks werden unterstützt.

Praxisbeispiel

Ein Shop definiert seine Bestell-API mit OpenAPI:

openapi: 3.0.3
info:
  title: Shop API
  version: 1.0.0
  description: API für die Verwaltung von Bestellungen

servers:
  - url: https://api.shop.example.com/v1

paths:
  /orders:
    post:
      summary: Bestellung anlegen
      tags:
        - Orders
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderRequest'
      responses:
        '201':
          description: Bestellung erstellt
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
        '400':
          description: Ungültige Eingabe

components:
  schemas:
    OrderRequest:
      type: object
      required:
        - customerId
        - items
      properties:
        customerId:
          type: integer
          example: 123
        items:
          type: array
          items:
            $ref: '#/components/schemas/OrderItem'
    OrderItem:
      type: object
      required:
        - productId
        - quantity
      properties:
        productId:
          type: integer
          example: 42
        quantity:
          type: integer
          minimum: 1
          example: 2
    Order:
      type: object
      properties:
        orderId:
          type: integer
          example: 98765
        status:
          type: string
          example: created

Aus dieser Spezifikation kann Swagger UI eine interaktive Dokumentation generieren, OpenAPI Generator kann Clients für JavaScript, Python oder Java erzeugen und Tester können Schema-Validierungen durchführen.

FAQ: OpenAPI und Swagger

1. Was ist OpenAPI?

OpenAPI ist ein maschinenlesbares Format zur Beschreibung von REST APIs. Es definiert Endpunkte, Methoden, Parameter, Schemas, Statuscodes und Sicherheitsmechanismen.

2. Was ist der Unterschied zwischen OpenAPI und Swagger?

OpenAPI ist die Spezifikation. Swagger ist ein Markenname für Tools wie Swagger UI, Swagger Editor und Swagger Codegen, die OpenAPI-Dokumente nutzen. Früher hieß die Spezifikation selbst Swagger.

3. In welchem Format wird OpenAPI geschrieben?

OpenAPI wird entweder in YAML oder JSON geschrieben. YAML ist dabei wegen seiner besseren Lesbarkeit häufiger verbreitet, JSON wird oft für automatisierte Verarbeitung genutzt.

4. Was ist Swagger UI?

Swagger UI ist ein Tool, das aus einer OpenAPI-Spezifikation eine interaktive HTML-Dokumentation erzeugt. Nutzer können Endpunkte direkt im Browser ausprobieren.

5. Was ist Redoc?

Redoc ist ein Open-Source Tool, das aus OpenAPI-Spezifikationen ansprechende und gut lesbare Dokumentationen erzeugt. Es ist besonders für Endnutzer-Dokumentation geeignet.

6. Was sind Components in OpenAPI?

Components enthalten wiederverwendbare Definitionen wie Schemas, Parameter, Responses und Security Schemas. Sie ermöglichen eine konsistente und wartbare Spezifikation.

7. Was ist Codegenerierung mit OpenAPI?

Codegenerierung erzeugt Client- oder Server-Code aus einer OpenAPI-Spezifikation. Das beschleunigt die Entwicklung und sorgt dafür, dass Client und Server auf demselben Vertrag basieren.

8. Was ist ein Schema in OpenAPI?

Ein Schema in OpenAPI definiert die Struktur von Daten. Es legt Typen, Pflichtfelder, Formate, Beispiele und Validierungsregeln für Request Bodies und Responses fest.

9. Was sind Security Schemas?

Security Schemas beschreiben, wie die API abgesichert ist. Typische Verfahren sind Bearer Token, API Keys, HTTP Basic und OAuth2. Sie werden in Components definiert und in Operationen referenziert.

10. Was ist ein Single Source of Truth?

Ein Single Source of Truth ist eine einzige, maßgebliche Quelle für Informationen. OpenAPI ist die Single Source of Truth für die API, aus der Dokumentation, Tests und Code generiert werden.

11. Was ist API First Design?

API First Design bedeutet, dass die API-Spezifikation vor der Implementierung erstellt wird. OpenAPI ist das zentrale Werkzeug für diesen Ansatz.

12. Was ist ein Mock-Server aus OpenAPI?

Ein Mock-Server simuliert eine API basierend auf der OpenAPI-Spezifikation. Er liefert vordefinierte Antworten und ermöglicht es, Clients zu entwickeln, bevor die echte API fertig ist.

13. Was ist der Vorteil von OpenAPI für Tester?

Tester können OpenAPI nutzen, um Schema-Validierungen, Contract Tests und automatisierte Tests zu erstellen. Die Spezifikation dient als Referenz für erwartete Requests und Responses.

14. Was ist OpenAPI Linting?

OpenAPI Linting prüft die Spezifikation auf Regelverstöße, Inkonsistenzen und fehlende Bestandteile. Tools wie Spectral helfen, qualitativ hochwertige Spezifikationen zu gewährleisten.

15. Was sind Best Practices für OpenAPI Spezifikationen?

Best Practices sind vollständige Endpunkte und Responses, wiederverwendbare Components, aussagekräftige Beispiele, klare Beschreibungen, korrekte Security Schemas, Versionierung und regelmäßige Pflege der Spezifikation.

Quellen

  1. https://www.openapis.org/
  2. https://swagger.io/tools/
  3. https://redocly.com/redoc/

Buchempfehlungen zur API-Entwicklung

Wenn Du Dich weiter mit OpenAPI, API-Dokumentation und API-Design beschäftigen möchtest, empfehlen wir Dir die folgenden Bücher:

Keine Bücher für Kategorie "api-development" gefunden.

Zurück zum Blog
Share:

Ähnliche Beiträge