Web-APIs sind das aktuelle Trendthema in den IT-Abteilungen. Als primärer Kommunikationspartner für Fat-, Mobil- und Web-Clients sind Web-APIs das Rückgrat moderner verteilter Anwendungen. Sind synchrone Requests via REST und GraphQL oder Push-Notifications via Server-Sent Events und WebSocket die bessere Wahl? Welches Austauschformat sollte man wählen? Wie sieht gutes "Error Handling" aus? Und was ist mit Themen wie Security und Versionierung?
Lebensnahe Beispiele, jede Menge Best-Practices und viel Code, der nahtlos in eigene Projekte übernommen werden kann, bilden die Grundlage für die Session.
3. ÜBER UNS
Wer bin ich - und wenn ja, wie viele?
• Enterprise Architect
• Enterprise & mehr
• Autor, Speaker, Berater, Coach
• Tauch & Ski Enthusiast
• Grillmeister & Hobbygärtner ;)
STEPHAN MÜLLER
SM
4. #WISSENTEILEN
“API design should not be constrained by
what can be done giving existing limitations,
but rather by what should be done.”
Jennifer Riggins, ProgrammableWeb
10. #WISSENTEILEN
REST
Web-APIs
- REpresentational State Transfer
- Architekturstil definiert von Roy Fielding
- Ausnutzung „aller“ HTTP Methoden & Hypermedia
- „beliebige“ Mediatypes / Datenformate
Hypermedia
URI
HTTP
11. #WISSENTEILEN
GraphQL
Web-APIs
- SQL-Like Query Language
- von Facebook als Alternative zu REST entwickelt
- komplexe Abfragen via Objekt-Graph möglich
- liefert Abfrageergebnis in einem einzigen Round-Trip
- mehr Flexibilität für Clients
12. #WISSENTEILEN
Server-SentEvents
Web-APIs
- W3C Standard für Server-Push
- Sendet UTF-8 Daten vom Server zum Client
- definierte Datenstruktur & Media-Type für Event
- initialer Verbindungsaufbau durch Client
- built-in Support für reconnect (Timeout)
- aber Anzahl paralleler Verbindungen begrenzt
13. #WISSENTEILEN
WebSocket
Web-APIs
- W3C Standard für Full-Duplex Kommunikation
- Socket-Verbindung über TCP
- lediglich EINE Connection (up/down)
- extrem leichtgewichtig dank HTTP Upgrade
- Low-Level Protokoll ohne Header, Statuscodes, etc.
14. #WISSENTEILEN
Event-Feed
Web-APIs
- API zur Bereitstellung von Events
- ermöglicht Clients Ereignisse zu verarbeiten
- Anwendung u.a. beim Event-Sourcing
- Atom, Kafka Streams (nur mit Apache Kafka)
16. #WISSENTEILEN
Web-APIs - Dokumentation
ü Aufrufe und Abfragen sind dokumentiert
ü Beispiele für die erwartete und zu erwartende Payload
→ OpenAPI Specification (fka Swagger)
→ GraphQL Schema
18. #WISSENTEILEN
Web-APIs - Payload
ü effizient, kompakt & schnell
ü breiter Language/Framework Support
ü Developer/IDE friendly
→ JSON == Native Web Format
→ binäres Format (Protocol Buffers, Apache Avro) wenn notwendig
21. #WISSENTEILEN
Web-APIs - Fehlerhandling
ü Fehler als alternative Antwort berücksichtigen
ü Fehlercode für client-spezifische Fehlermeldungen
ü Fehlernachricht für Entwickler & Operator
ü Fehlerart kenntlich machen (Statuscode, Fehlertyp)
→ einfache Fehlerdatenstruktur
→ in GraphQL über Extensions
26. #WISSENTEILEN
Web-APIs - Security
☹ Password wird bei jeder Anfrage übertragen (Basic Auth)
☹ Jeder Service muss Benutzer & Credentials kennen
☹ Benutzersession als State auf dem Server (Skalierbarkeit ⚡)
→ SSO Server als Identity Provider nutzen
→ Token based Security (OAuth2, OpenID_Connect)
27. #WISSENTEILEN
Web-APIs - Security
ü jeder Request wird einzeln autorisiert
ü rollen-basierte Zugriffskontrolle je Anfrage
ü Token liefert zusätzliche Informationen über Nutzer
→ JSON Web Token nutzen