Wiederverwendbare Komponenten mit der OpenAPI definieren

APIGit

2023-06-15

openapi-components-reuse

Die OpenAPI-Spezifikation (OAS) bietet eine leistungsstarke und standardisierte Möglichkeit, APIs zu beschreiben. Eines der wertvollsten Features der Spezifikation ist diecomponentsObjekt, das die Wiederverwendung verschiedener Elemente in einer API ermöglicht, wodurch Konsistenz sichergestellt und Redundanz reduziert wird.

Komponenten in OAS verstehen

Der componentsObjekte können Schemata, Parameter, Antworten, Header, Anforderungstexte, Sicherheitsschemata und Beispiele enthalten. Dieser zentralisierte Container verbessert die Wiederverwendbarkeit und Wartbarkeit Ihrer API-Definitionen.

Häufig wiederverwendete Komponenten

Schemas

Schemata definieren die Struktur von Anforderungs- und Antworttexten. Sie können ein Benutzerobjekt, eine Fehlermeldungsstruktur oder eine andere Datenentität darstellen.

Beispiel:

components:
  schemas:
    User:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string

Parameter

Parameter können für mehrere Vorgänge wiederverwendet werden, z. B. die ID in Pfaden oder Limit und Offset für die Seitennummerierung.

Beispiel:

components:
  parameters:
    userId:
      name: userId
      in: path
      required: true
      schema:
        type: integer
    limitParam:
      name: limit
      in: query
      schema:
        type: integer
        default: 10

Antworten

Gemeinsame Antwortstrukturen, insbesondere zur Fehlerbehandlung, können einmal definiert und wiederverwendet werden, wodurch ein konsistentes API-Verhalten gewährleistet wird. Beispiel:

components:
  responses:
    NotFound:
      description: The specified resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'

Überschriften

Standardheader, die an verschiedenen Endpunkten verwendet werden können, können einmal definiert und wiederverwendet werden.

Beispiel:

components:
  headers:
    X-Rate-Limit:
      description: The number of allowed requests in the current period
      schema:
        type: integer

Sicherheitsschemata

Durch die Definition gemeinsamer Sicherheitsschemata können Sie diese in der gesamten API wiederverwenden und so konsistente Sicherheitspraktiken gewährleisten.

Beispiel:

components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-KEY

Best Practices für Wiederverwendbarkeit

Regeln der Namensgebung

Verwenden Sie klare, beschreibende Namen für Komponenten, damit Entwickler sie leichter verstehen und wiederverwenden können. Beispielsweise „User“ für ein Benutzerobjektschema, „NotFound“ für eine allgemeine 404-Fehlerantwort.

Organisation und Struktur

Organisieren Sie Ihre Komponenten logisch, indem Sie sie beispielsweise nach ihrem Typ (z. B. Antworten, Parameter) oder nach ihrem Domänenbereich (z. B. Authentifizierung, Benutzer, Produkte) kategorisieren.

Vermeidung einer Übermodularisierung

Obwohl Wiederverwendbarkeit von entscheidender Bedeutung ist, kann eine zu große Detailliertheit das Verständnis und die Wartung der API-Spezifikation erschweren. Ausgewogenheit ist entscheidend.

Beispielszenarien

Allgemeines Fehlerantwortschema

components:
  schemas:
    Error:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string

Wiederverwenden von Abfrageparametern für die Paginierung

paths:
  /users:
    get:
      parameters:
        - $ref: '#/components/parameters/limitParam'
        - name: offset
          in: query
          schema:
            type: integer
            default: 0

Gemeinsamer Autorisierungsheader

paths:
  /protected/resource:
    get:
      security:
        - ApiKeyAuth: []
      responses:
        '200':
          description: Success

Abschluss

Effektive Nutzung dercomponentsObjekt in OAS kann die Konsistenz und Wartbarkeit Ihrer API-Spezifikationen erheblich verbessern. Durch Einhaltung bewährter Methoden und Nutzung des intuitiven API-Editors von APIGIT können Entwickler effiziente, wiederverwendbare und gut organisierte API-Definitionen erstellen.