API (Application Programming Interface)
Eine definierte Schnittstelle, über die Softwaresysteme miteinander kommunizieren können – der Standard für die Integration von KI-Diensten in Anwendungen.
Ein Standard zur Beschreibung von REST-APIs – ermöglicht automatische Dokumentation, Code-Generierung und API-Testing.
OpenAPI ist ein Standard, um REST-APIs zu beschreiben. Statt Dokumentation manuell zu schreiben, definierst du die API in einem strukturierten Format – und Tools generieren Docs, Tests und Code automatisch.
Vorher (ohne OpenAPI):
Dokumentation: Word-Dokument, veraltet nach 2 Wochen
Testing: Postman-Collection, manuell gepflegt
Client-Code: Jeder schreibt eigenen HTTP-Code
Nachher (mit OpenAPI):
openapi.yaml → Swagger UI (Docs)
→ Postman Import (Testing)
→ SDK Generator (Client-Code)
→ Server Stubs (Backend)
Beispiel OpenAPI-Spec:
openapi: 3.1.0
info:
title: User API
version: 1.0.0
paths:
/users/{id}:
get:
summary: Get user by ID
parameters:
- name: id
in: path
required: true
schema:
type: integer
responses:
'200':
description: User found
content:
application/json:
schema:
$ref: '#/components/schemas/User'
'404':
description: User not found
components:
schemas:
User:
type: object
properties:
id:
type: integer
name:
type: string
email:
type: string
format: email
openapi: 3.1.0 # Version
info: # Metadaten
title: My API
version: 1.0.0
description: API description
servers: # Basis-URLs
- url: https://api.example.com/v1
paths: # Endpunkte
/resource:
get: ...
post: ...
components: # Wiederverwendbare Teile
schemas: ... # Datenmodelle
parameters: ... # Parameter
responses: ... # Response-Definitionen
securitySchemes: ... # Auth-Methoden
security: # Globale Security
- bearerAuth: []
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: Read access
write: Write access
security:
- bearerAuth: []
paths:
/users:
post:
summary: Create user
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- name
- email
properties:
name:
type: string
minLength: 1
maxLength: 100
email:
type: string
format: email
example:
name: "Max Mustermann"
email: "max@example.com"
responses:
'201':
description: User created
content:
application/json:
schema:
$ref: '#/components/schemas/User'
Client generieren:
openapi-generator generate \
-i openapi.yaml \
-g typescript-axios \
-o ./generated-client
Unterstützte Sprachen (Auswahl):
| Ansatz | Beschreibung | Vorteile |
|---|---|---|
| Spec-First | Erst Spec schreiben, dann implementieren | Sauberer Contract, bessere Planung |
| Code-First | Spec aus Code generieren | Schneller, immer synchron |
Code-First Beispiel (FastAPI):
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class User(BaseModel):
id: int
name: str
email: str
@app.get("/users/{user_id}", response_model=User)
async def get_user(user_id: int):
...
# OpenAPI-Spec automatisch unter /openapi.json
# Spec validieren
npx @redocly/cli lint openapi.yaml
# Request/Response gegen Spec validieren
# (in Tests oder als Middleware) OpenAPI ist wie ein Bauplan für APIs: Jeder Entwickler kann den Plan lesen und weiß genau, welche Endpunkte es gibt, welche Daten erwartet werden und was zurückkommt – ohne den Code zu lesen.
Maschinenlesbares Format (YAML/JSON) zur API-Beschreibung
Swagger UI generiert interaktive Dokumentation automatisch
Ermöglicht Code-Generierung für Clients und Server
API-Dokumentation
Automatisch generierte, interaktive Docs für Entwickler
Code-Generierung
Client-SDKs und Server-Stubs aus der Spec generieren
API-Testing
Requests direkt aus der Dokumentation testen
Contract-First Development
Erst API-Spec definieren, dann implementieren
Swagger war der ursprüngliche Name. 2016 wurde die Spezifikation an die OpenAPI Initiative übergeben und heißt jetzt OpenAPI. Swagger bezeichnet heute die Tools (UI, Editor, Codegen).
3.1 (aktuell) ist vollständig JSON-Schema-kompatibel. 3.0 hat noch kleine Abweichungen. Für neue Projekte 3.1 verwenden.
Code-First: Spec aus Code generieren (Annotationen). Spec-First: Spec ist die Quelle, Code wird generiert oder validiert. Spec-First ist sauberer, Code-First praktischer.
Nein, OpenAPI ist für REST. GraphQL hat eigene Introspection und Tools wie GraphiQL. Es gibt aber Tools, die beides unterstützen.