OpenAPI/Swagger: API-Dokumentation | Enjyn Gruppe
Hallo Welt
Hallo Welt
Original Lingva Deutsch
Übersetzung wird vorbereitet...
Dieser Vorgang kann bis zu 60 Sekunden dauern.
Diese Seite wird erstmalig übersetzt und dann für alle Besucher gespeichert.
0%
DE Zurück zu Deutsch
Übersetzung durch Lingva Translate

235 Dokumentationen verfügbar

Wissensdatenbank

API Dokumentation OpenAPI

Zuletzt aktualisiert: 20.01.2026 um 10:03 Uhr

OpenAPI/Swagger: API-Dokumentation

OpenAPI ist der Standard für REST-API-Dokumentation. Lernen Sie, wie Sie Ihre API professionell dokumentieren.

Grundstruktur

# openapi.yaml
openapi: 3.0.3
info:
  title: My API
  description: API für meine Anwendung
  version: 1.0.0
  contact:
    email: api@example.com

servers:
  - url: https://api.example.com/v1
    description: Production
  - url: https://staging-api.example.com/v1
    description: Staging

paths:
  /users:
    get:
      # ...
    post:
      # ...

components:
  schemas:
    User:
      # ...
  securitySchemes:
    bearerAuth:
      # ...

Paths und Operations

paths:
  /users:
    get:
      summary: Liste aller Benutzer
      description: Gibt eine paginierte Liste aller Benutzer zurück
      operationId: getUsers
      tags:
        - Users
      parameters:
        - name: page
          in: query
          description: Seitennummer
          schema:
            type: integer
            default: 1
        - name: limit
          in: query
          description: Einträge pro Seite
          schema:
            type: integer
            default: 20
            maximum: 100
      responses:
        '200':
          description: Erfolgreiche Antwort
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/User'
                  pagination:
                    $ref: '#/components/schemas/Pagination'
        '401':
          $ref: '#/components/responses/Unauthorized'

    post:
      summary: Benutzer erstellen
      operationId: createUser
      tags:
        - Users
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateUserRequest'
      responses:
        '201':
          description: Benutzer erstellt
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
        '400':
          $ref: '#/components/responses/ValidationError'

  /users/{id}:
    get:
      summary: Benutzer abrufen
      operationId: getUser
      tags:
        - Users
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Erfolg
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
        '404':
          $ref: '#/components/responses/NotFound'

Schemas (Datenmodelle)

components:
  schemas:
    User:
      type: object
      required:
        - id
        - email
        - name
      properties:
        id:
          type: integer
          example: 123
        email:
          type: string
          format: email
          example: user@example.com
        name:
          type: string
          minLength: 2
          maxLength: 100
          example: Max Mustermann
        role:
          type: string
          enum: [user, admin, moderator]
          default: user
        createdAt:
          type: string
          format: date-time
        profile:
          $ref: '#/components/schemas/UserProfile'

    CreateUserRequest:
      type: object
      required:
        - email
        - name
        - password
      properties:
        email:
          type: string
          format: email
        name:
          type: string
          minLength: 2
        password:
          type: string
          minLength: 8
          format: password

    Pagination:
      type: object
      properties:
        page:
          type: integer
        limit:
          type: integer
        total:
          type: integer
        totalPages:
          type: integer

Authentifizierung

components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

    apiKey:
      type: apiKey
      in: header
      name: X-API-Key

    oauth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://auth.example.com/authorize
          tokenUrl: https://auth.example.com/token
          scopes:
            read: Lesezugriff
            write: Schreibzugriff

# Global anwenden
security:
  - bearerAuth: []

# Oder pro Operation
paths:
  /public:
    get:
      security: []  # Keine Auth
  /private:
    get:
      security:
        - bearerAuth: []

Fehler-Responses

components:
  responses:
    NotFound:
      description: Ressource nicht gefunden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: NOT_FOUND
              message: Die angeforderte Ressource wurde nicht gefunden

    ValidationError:
      description: Validierungsfehler
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: object
                properties:
                  code:
                    type: string
                    example: VALIDATION_ERROR
                  message:
                    type: string
                  details:
                    type: array
                    items:
                      type: object
                      properties:
                        field:
                          type: string
                        message:
                          type: string

    Unauthorized:
      description: Nicht authentifiziert
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'

  schemas:
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
            message:
              type: string

Tools

# Swagger UI (Interaktive Dokumentation)
docker run -p 8080:8080 \
  -e SWAGGER_JSON=/spec/openapi.yaml \
  -v ./openapi.yaml:/spec/openapi.yaml \
  swaggerapi/swagger-ui

# Swagger Editor (online)
# editor.swagger.io

# Code-Generierung
npx @openapitools/openapi-generator-cli generate \
  -i openapi.yaml \
  -g typescript-fetch \
  -o ./generated-client

# Validierung
npx @redocly/cli lint openapi.yaml

# Redoc (Alternative zu Swagger UI)
npx @redocly/cli build-docs openapi.yaml

Aus Code generieren

// Node.js: swagger-jsdoc
/**
 * @openapi
 * /users:
 *   get:
 *     summary: Liste aller Benutzer
 *     responses:
 *       200:
 *         description: Erfolg
 */
app.get('/users', getUsers);

// PHP: zircote/swagger-php
/**
 * @OA\Get(
 *     path="/users",
 *     summary="Liste aller Benutzer",
 *     @OA\Response(response="200", description="Erfolg")
 * )
 */
public function getUsers() {}
💡 Tipp: Halten Sie Ihre OpenAPI-Spezifikation aktuell. Automatisieren Sie die Validierung in Ihrer CI/CD-Pipeline.

Weitere Informationen

Enjix Beta

Enjyn AI Agent

Hallo 👋 Ich bin Enjix — wie kann ich dir helfen?
120