Expertise

Patterns for API Design

Moderne Softwaresysteme bestehen aus vielen Teilen, die sich an unterschiedlichen Orten befinden: als Webapplikationen im Browser, als Apps für verschiedenste mobile Geräte, in einer Cloud und in Firmenrechenzentren. Als Schnittstelle für die Kommunikation und den Datenaustausch zwischen den Teilen dienen Application Programming Interfaces (APIs); APIs bilden die Noppen auf den Anwendungs-Legosteinen. Dabei sind APIs häufig nicht nur interner Bestandteil eines Systems, sondern werden als Software-as-a-Service Angebote auch Dritten zur Verfügung gestellt: so bieten Cloud-Provider wie Amazon und Google Zugang zu ihren Produkten via API an, aber auch beispielsweise das freie Geodatenprojekt OpenStreetMap.

Die meisten APIs sind keine fixfertigen Softwarebibliotheken, sondern werden in Projekten neu entwickelt und auf individuelle Anforderungen ihrer Nutzer zugeschnitten. Dabei ist es wichtig, das Rad nicht in jedem Projekt neu zu erfinden, sondern von der kollektiven Erfahrung der API-Community zu profitieren. Eine beliebte Form, solches Communitywissen zu strukturieren sind Design-Patterns, die bewährte Lösungen mit Vor- und Nachteilen auf einer konzeptionellen Ebene technologieübergreifend beschreiben. In der Literatur finden sich bereits Patterns, die den API-Entwurf beschleunigen und risikoärmer machen können; u.a. der Datenaustausch zwischen API-Nutzerprogramm und API-Implementierung wurde aber noch nicht umfassend betrachtet.

Dieser Herausforderung stellte sich ein Autorenteam aus Industrie und der Universitäten Wien und Lugano unter der Leitung der OST-Informatik Professoren Olaf Zimmermann und Mirko Stocker. Ihr im Dezember 2022 im Addison-Wesley Professional Verlag erschienenen Buch "Patterns for API Design: Simplifying Integration with Loosely Coupled Message Exchanges" stellt 44 Patterns zu unterschiedlichen API-Designaspekten vor, die in verschiedenen Entwicklungsphasen einer API nützlich sind. Einige Beispiele sind API Key (Zugriffskontrolle und -schutz), Pagination (Blättern in Ergebnismengen) und Two in Production (duale Bereitstellung von Versionen). 

Die Webseite www.api-patterns.org gibt einen Überblick über die Patterns und Ihre Anwendung. 

Kooperation: