
# API-Schnittstellen
#### Situation

- Ein System besteht aus Prozessen, die von verschiedenen Teams entwickelt werden

- Keine einheitliche Schnittstelle zwischen den Komponenten

    - Historisch gewachsen: Von selbst erfundenen Protokollen bis zu SOAP

- Keine konsistente Dokumentation dieser Schnittstellen

- Nur die *Experten* können Änderungen vornehmen

---

# API-Schnittstellen
#### Änderungen

- Einführung von REST, wo möglich

- Schulung der Mitarbeiter, so dass *jeder* mit REST vertraut ist

- Definition der Schnittstellen via [OpenAPI](https://www.openapis.org)

- Dafür wird [Swagger](https://swagger.io/swagger-editor/) eingesetzt

- Änderungen werden durch die Codeverwaltung versioniert

---

# API-Schnittstellen
#### Ergebnis

- HTTPS anstelle von unsicheren, selbst entwickelten Formaten

- Verbreiterung der Wissensbasis: Jeder kann die Spezifikation verstehen

- Spezifikation dient auch Kunden als Quelle für eigene Anbindungen

- Automatische Code-Generierung möglich

---

# API-Schnittstellen
#### Anti-Pattern

- Nicht in jedem Fall ist REST geeignet

    - z.B. zu hohe Last durch Polling der Clients

- Aber: Immer prüfen, ob die Voraussetzungen geschaffen werden können

---
