Das Wissensportal für IT-Professionals. Entdecke die Tiefe und Breite unseres IT-Contents in exklusiven Themenchannels und Magazinmarken.

SIGS DATACOM GmbH

Lindlaustraße 2c, 53842 Troisdorf

Tel: +49 (0)2241/2341-100

kundenservice@sigs-datacom.de

Editorial JavaSPEKTRUM 5/24: APIs – ein Rundblick von oben

Seitdem Microservices die IT-Welt „beherrschen“ gehören APIs (Application Programming Interfaces) zu den wichtigsten Zugängen, um auf entfernte Funktionalität zugreifen zu können. Zur Formatierung und Serialisierung der übertragenen Daten kommen JSON (RESTful, GraphQL) oder Googles Protobuf (gRPC) zum Einsatz. Sowohl dem Entwickler von APIs als auch dem Nutzer bleibt es dadurch frei, die für ihn richtige Implementierung, Programmiersprache und Plattform einzusetzen.

Author Image
Michael Stal

Chefredakteur von JavaSPEKTRUM


  • 20.09.2024
  • Lesezeit: 4 Minuten
  • 310 Views

Beispiele sind der programmatische Zugriff auf OpenGPT-X-Modelle und die Integration von Google Maps oder OpenWeather-Maps in eigene Anwendungen. Weil Sicherheit eine wichtige Rolle spielt, stellen die Anbieter von kostenlosen oder kostenpflichtigen Diensten meist API-Tokens zur Verfügung, gewissermaßen als Schlüssel, um den Dienstzugriff abzusichern und natürlich, um Zugriffskosten abzurechnen.

Doch was zeichnet eigentlich gute APIs aus? Mit den oben genannten Werkzeugen müssen Entwickler schließlich sorgsam und systematisch umgehen, wenn sie ein gutes Design schaffen wollen.

Nutzbarkeit: Eine API sollte für Entwickler leicht, logisch und intuitiv erfassbar und nachvollziehbar sein. Notwendig sind für einen schnellen Einstieg geeignete Beispiele, Tutorien und Dokumentationen. Natürlich sollten die Beispiele über praxisferne Spielanwendungen hinausgehen, ohne den Entwickler mit Komplexität zu erschlagen. Das Einfache oder Offensichtliche muss leicht zu bewerkstelligen sein, das Komplexe umsetzbar. Im Optimalfall ist eine API problemraumorientiert entworfen.

Dokumentation: Ist sie leicht verständlich, klar und aktuell, schafft sie eine ideale Basis. Dazu gehört die Dokumentation aller Funktionen inklusive ihrer erwarteten Parameter, der zurückgelieferten Ergebnisse und möglicher Fehler. Ebenfalls wichtig sind die leichte Auffindbarkeit der Dokumente und ihre Navigierbarkeit.

Konsistenz: Die verwendete Benennung von Funktionen, Namen, Resultaten sollte sich einheitlich und konsistent durchs Design ziehen. Es ist beispielsweise verwirrend, eine Factory-Methode mit „create“ beginnen zu lassen, eine andere aber mit „make“. Wenn die API-Provider die verwendeten und empfohlenen Idiome und Best Practices aufzeigen und sich strikt daran halten, ergibt sich eine Win-Win-Situation.

Fehlerbehandlung: Aufrufe können schief gehen. Erhält die Aufruferin eine klare und aussagekräftige Fehlermeldung, kann sie entsprechende Maßnahmen ableiten. Dazu gehört natürlich ebenso, dass die API systemnahe Ausnahmen abfängt und, soweit möglich, selbst behandelt. Die Entwicklerin muss dann nicht in die Tiefen der API-Implementierung abtauchen, sondern erhält Fehler, die in ihrem eigenen Kontext Sinn ergeben.

Versionierung: Ohne Versionierungskonzept kommt es bei Änderungen der bereitgestellten Funktionalität oft zu Problemen bei Nutzeranwendungen. Eine Versionierung lässt Änderungen zu, ohne Clientcode dysfunktional zu machen. Ein Beispiel sind Versionsangaben in URL-Pfaden wie „……./v1/orders“. Diese Thematik sollten Entwickler nicht unterschätzen, denn zukünftige Änderungen kommen garantiert.

Erweiterbarkeit: Wie bei Ökosystemen und Produktlinien ist es auch bei APIs notwendig, genügend Variabilität für die Nutzer zu gewährleisten, damit diese die Funktionalität in verschiedenen Anwendungen nutzen können. Die Erweiterung um neue Funktionalität muss möglich sein, ohne die Anwendung zu verkomplizieren oder dysfunktional zu machen. Erweiterungen müssen sich gut integrieren und dürfen nicht wie Fremdkörper oder Patches wirken.

Effizienz: Wer große Datenmengen über schmale Datenbandbreiten versendet, Algorithmen unnötig zeitaufwendig gestaltet oder nicht für die benötigte Skalierbarkeit sorgt, erzeugt bei Anwendern Unmut und eine Abstimmung mit den Füßen. Effizienz darf nicht nur ein Schlagwort bleiben, sondern muss tatsächlich umgesetzt sein.

Sicherheit: Nicht nur bei öffentlich zur Verfügung gestellten APIs ist Sicherheit essenziell, sondern auch bei unternehmensinternen Diensten. Daher benötigt eine API Mechanismen, um zum Beispiel Autorisierung, Authentifizierung und Vertraulichkeit zu gewährleisten. Technologien wie OAuth2, SSO, Keycloak sind hierfür prädestiniert.

Resilienz und Verfügbarkeit: Die beste API-Implementierung nützt nichts, wenn sie ständig an Abstürzen und Verfügbarkeitsproblemen leidet. Der API-Provider muss also sowohl in der API als auch in der Infrastruktur für hohe Resilienz und Verfügbarkeit sorgen. SLAs gehören ebenfalls in diesen Kontext. Ganz abgesehen davon, dürften Entwickler wenig Happiness verspüren, wenn die kostenpflichtige API sich als instabil erweist. Oft rentiert sich deshalb das Betreiben der API in einer Cloudumgebung.

Communities: Eine große Community ist der effektiven Handhabung und Nützlichkeit einer API höchst zuträglich, weil sich die Nutzer unter einander austauschen und Hilfe einholen können. Zudem erstellen Drittanbieter dann häufiger Werkzeuge, Dokumente und Best Practice Patterns. Für neue Probleme gibt es in der jeweiligen Community meistens Lösungen oder Workarounds.

Die Bedeutung von APIs wächst beständig. Es sollte uns Entwicklern und Architekten Spaß machen, sie zu nutzen und damit gute Anwendungssoftware zu entwickeln. Sie dürfen nicht als Belastung empfunden werden, sondern als leistungsfähiges Werkzeug für die Umsetzung der eigenen Konzepte. Grund genug für uns, das Thema API in den Hauptfokus dieser Ausgabe zu stellen.

Ihr Prof. Dr. Michael Stal

. . .

Author Image

Michael Stal

Chefredakteur von JavaSPEKTRUM
Zu Inhalten

Prof. Dr. Michael Stal beschäftigt sich bei der Corporate Technology der Siemens AG mit Software- und Systemarchitekturen, Digitalisierung und KI. An der University of Groningen hält er Vorlesungen und betreut Doktoranden. Außerdem ist er Chefredakteur von JavaSPEKTRUM.


Artikel teilen