REST APIs mit Delphi
Kaum eine Software kommt noch ohne die Verwendung von REST APIs aus. Im einen Fall ist es die Schnittstelle zu einem Zahlungsdienstleister, im nächsten Fall die Schnittstelle zum Anbieter einer Cloud API oder schlicht die Daten-Schnittstelle für ein mobiles Gerät. Im nächsten Projekt soll vielleicht der Microservice eines anderen Teams angebunden oder gar ein eigener Microservice mit einer REST API bereitgestellt werden.
Für viele ist REST bei grober Betrachtungsweise nicht mehr als vorzugsweise JSON-Daten über HTTP auszutauschen und jede API, die „irgendwie“ über HTTP-Standardverben Ressourcen bereitstellt, ist eine REST API. Beschäftigt man sich näher mir REST, stellt man fest, dass diese Sicht in vielerlei Hinsicht stark verkürzt ist. Zum einen ist JSON eigentlich nur eines von vielen Formaten und zum anderen spielt, so man denn REST auch als Architekturmodell begreift, die Verlinkung von Ressourcen und Verwendung von Hypermedia eine entscheidende Rolle.
In der Praxis kommen dann schnell weitere Herausforderungen hinzu, es werden in bestehenden Anbieter-APIs vielleicht benutzerdefinierte Medientypen verwendet oder es wird sogar über den Medientyp versioniert, standardisierte oder spezielle Authentifizierungsverfahren müssen implementiert werden oder es sind Mindestanforderungen an die Transportsicherheit wie TLS1.2 erforderlich. Nicht alle dieser Herausforderungen lassen sich mit den REST-Client-Komponenten, die in Delphi mitgeliefert werden, meistern.
Auf der Serverseite bietet Delphi zumindest in der Enterprise Edition DataSnap für die Implementierung von REST-Servern an. Daneben gibt es auch Alternativen im Open Source Bereich wie mORMot oder die MARS Curiosity Library, die sich für die Erstellung von REST-Servern und APIs verwenden lassen.
Im Workshop starten wir mit den Grundlagen und Konzepten von REST um dann einen praktischen Einstieg in die Verwendung von REST Apis mit Delphis REST-Client-Komponenten zu finden und diese kennen zu lernen. Mit den Komponenten erarbeiten wir uns Details zum JSON-Support schauen uns Authentifizierungsverfahren an, diskutieren Fehlerhandling und die Verbindungssicherheit auf Protokollebene (SSL) und lernen nützliche Tools vom Delphi REST Debugger über Fiddler zu curl kennen. Wir diskutieren die Grenzen und Einschränkungen von Delphis REST-Client-Komponenten und lernen alternative Komponenten kennen.
Im zweiten Teil des Workshops schauen wir uns im Detail an, wie mit DataSnap, mORMot und MARS Curiosity REST Apis bereitgestellt werden können. Wir diskutieren die Vor- und Nachteile der unterschiedlichen Bibliotheken und untersuchen welche REST-Architekturmerkmale mit den Bibliotheken realisiert werden können. Aus Serversicht diskutieren wir den API Entwurf, Deployment und Sicherheit, Autorisierung und Authentifizierung, Fehlerhandling und Dokumentation.
Agenda
- REST Basics und Konzepte, Delphis REST-Client-Komponenten
- JSON Support, Authentifizierung und Grenzen der REST-Client-Komponenten
- Alternative Komponenten für REST Clients
- Rest Server mit DataSnap, mORMot und MARS Curiosity
- Unterschiede und Features der Server und Bibliotheken
- Deploymentvarianten und Security von Executables bis IIS und Apache
- Gestaltung einer RESTful API
- Autorisierung und Authentifizierung
- Fehlerhandling und Dokumentation
Voraussetzungen:
Kenntnisse in der objektorientierten Programmierung in Delphi.
Zusätzliche Hinweise:
Für die Nachvollziehbarkeit der Beispiele wird ein Notebook mit einer Delphi Version ab XE7 empfohlen.