22.01.2014 Aufrufe

Download (5Mb) - oops/ - Oldenburger Online-Publikations-Server

Download (5Mb) - oops/ - Oldenburger Online-Publikations-Server

Download (5Mb) - oops/ - Oldenburger Online-Publikations-Server

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

7.3 Backend 107<br />

Grape ermöglicht die Definition einer REST API durch die Bereitstellung eines “Micro-Frameworks”.<br />

Nachdem eine API definiert ist, kann diese Spezifikation auf einem Rack-kompatiblen Web <strong>Server</strong> installiert<br />

und den Client-Anwendungen angeboten werden. Grape unterstützt häufig verwendete Konzepte,<br />

die mit der Definition einer REST API verbunden sind, wie z.B. verschiedene Repräsentationen<br />

oder Formate: Die Anfrage an eine URI wie http://localhost/api/index.html liefert<br />

z.B. eine andere Antwort als eine Anfrage an die http://localhost/api/index.json)<br />

URI. Weiterhin unterstützt Grape die Versionierung einer API, durch die Einbettung der aktuellen Version<br />

in die URI (http://localhost/api/v8/etc) – alternativ können HTTP Headers oder<br />

Parameters verwendet werden.<br />

Weiterhin können verschiedene Namensräume (engl. namespace) definiert werden, in dem die beschriebenen<br />

Routen ihre Einzigartigkeit behalten – z.B. bei der Definition der Namensräume “foo”<br />

und “bar” werden die Anfragen “GET /foo/my-action” und “GET /bar/my-action” dem entsprechenden<br />

Namensraum weitergeleitet bzw. geroutet.<br />

Nachdem die benutzte technologische Grundlage für die Bereitstellung von REST APIs kurz eingeführt<br />

ist, werden in den kommenden Abschnitten Implementierungsdetails über die Umsetzung der<br />

Kommunikation zwischen dem Backend und dem Frontend gegeben.<br />

Definition einer Basis-API<br />

Ein erster Schritt für die Gewährleistung der Allgemeinheit im Fall der zu entwickelnden REST<br />

API ist die Definition einer Basis-API, die allgmein gültige Einstellungen feststellt. Diese Einstellungen<br />

werden per Ruby “Einbeziehung” (engl. inclusion, Ruby Schlüsselwort include) in die<br />

jeweiligen spezialisierten APIs integriert.<br />

Die genannten Einstellungen berühren REST- und HTTP-spezifische Themen, wie z.B. die Benutzung<br />

einer einheitlichen Versionnummer für API Methoden (s.o.), die Benutzung einer Default-<br />

Repräsentation oder die Feststellung eines Default Content-Type. Darüber hinaus werden in der<br />

Basis-API verschiedene Grape-spezifische Einstellungen ausgeführt wie die “stumme” Beseitigung<br />

eintretender Exceptions durch Logging (siehe auch 7.3.6).<br />

Die Basis-API enthält auch eine Basis-Funktionalität, die von erbenden APIs benutzt werden können:<br />

eine Methode zur Serialisierung (s.u.) und ggf. Komprimierung des übergebenen Inhalts. Weiterhin<br />

ist die Basis-API für erweiterte Konfigurationen zuständig, wie z.B. die Installation einer<br />

Rack-Middleware für die Implementierung des HMAC-basierten Sicherheitskonzeptes (siehe auch<br />

den kommenden, dedizierten Paragraph).<br />

Die genannten Einstellungen werden dank einem Feature von Ruby automatisch durchgeführt bei<br />

der Vererbung der Klasse BaseAPI von einer spezialisierten Klasse. Wie bei einer normalen Vererbung,<br />

bleiben die Einstellungen der Vater-Klasse bestehen, während die spezialisierte Klasse eine<br />

eigene REST API definiert. Weitere Details zur Spezialisierung werden in einem kommenden Abschnitt<br />

gegeben werden.<br />

Definition einer erweiterten API für die Einkapselung beliebiger Bestandteile des Datenmodells<br />

Die Spezialisierung der BaseAPI Klasse wird durch die Bestandteile des Datenmodells (siehe<br />

auch 7.2) ausgeprägt und ist in der Basis-Klasse BaseModelAPI zusammengefasst. Zum Beispiel

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!