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.

112 Umsetzung des Prototyps<br />

Ursprünglich wurde eine externe Bibliothek namens ruby-hmac für die Berechnung der SHA1-256<br />

Hashwertes angewendet, welche eine wesentlich geringere Performanz zeigt 20 .<br />

Nachdem die wesentlichen Aspekte der Umsetzung der REST API vorgestellt wurden, werden in<br />

den kommenden Abschnitten Details gegeben über die Aufstellung der API mithilfe eines Web <strong>Server</strong>s<br />

sowie die Beschreibung der verfügbaren Routes als die Beantwortung einer OPTIONS Anfrage.<br />

Beschreibung und Entdeckung von REST Web Services<br />

Ein grundlegendes Prinzip des Grape mini-Frameworks ist die Kompilierung von Routen, ein Prinzip<br />

welches auch anderen Web Frameworks zugrunde liegt. Der Name dieser Technik deutet an, dass<br />

die definierten Routen eines REST APIs bevor die Aufstellung (engl. deployment) auf einem Web<br />

<strong>Server</strong> “abgeschlossen” werden müssen. Das heißt, es können außer der “abgeschlossenen”, finalisierten<br />

Routen keine andere Route behandelt. Zu diesem Zweck werden alle deklarierten Routen<br />

einer REST API in einer Rack-konforme Anwendung zusammengefasst. Durch die Kompilierung der<br />

Routen werden diese stets statisch (Routen können auch anhand von variablen Parametern wie z.B.<br />

POST /model/:action/:id definiert werden. Diese Route besagt, dass die Parameter namens<br />

“action” und “id” aus der ankommenden Anfrage auszulesen sind), was die Bedeutung von “auswertbar”<br />

enthält.<br />

Die “Auswertung” der Routen wird auch von einem Grape-Plugin 21 benutzt. Dieses Plugin dient<br />

als ein Dokumentations-Werkzeug für die Beschreibung einer mit Grape definierten REST API und<br />

kann mit dem “Swagger” 22 Werkzeug zum Testen von Web Services zusammenarbeiten. Anhand des<br />

Prinzips der Routen-Kompilierung wurde in dieser Arbeit eine Erweiterung zur Beschreibung und<br />

eventuelle Entdeckung vorhandener REST Web Services, definiert, welche im Folgenden beschrieben<br />

wird.<br />

Durch Metaprogrammierung wurden in vorhandenen REST APIs (bzw. BaseAPI sowie Basic-<br />

ModelAPI) grundlegende HTTP Methoden zur Beschreibung der Funktionalität der entsprechenden<br />

API eingeführt. Beispielsweise liefert die Anfrage OPTIONS / eine JSON-kodierte Array mit dem<br />

folgenden Format zurück:<br />

[version: “v1”, method:“GET”, path:“/:version/set/visited(.:format),<br />

version: “v2”, method:“DELETE”, path:“/:version/:id/:recurse(.:format)]<br />

Hiermit wurde durch das Hash erkenntlich gemacht, welche Routen für die ausgewählte Namespace<br />

verfügbar sind. Dabei enthalten sind alle benötigten Informationen: die Version der API, die zu<br />

benutzende HTTP Methode sowie das erwartete Format der URI.<br />

Die Entdeckung vorhandener Services könnte mittels derselben vorgestellten Lösung erreicht werden:<br />

durch wiederholte Formulierungen von OPTIONS Anfragen (anfänglich an einen Dienst-Gateway<br />

und darauffolgend gezielt an eine Namespace von Interesse) könnten theoretisch neue durch REST<br />

Web Services veröffentlichte Dienste entdeckt werden.<br />

20 Artikel “OpenSSL::HMAC vs ruby-hmac Benchmarks”, Erscheinungsdatum: 04. Dez 2008, http://blog.<br />

nathanielbibler.com/post/63031273/openssl-hmac-vs-ruby-hmac-benchmarks<br />

21<br />

https://github.com/tim-vandecasteele/grape-swagger<br />

22<br />

http://swagger.wordnik.com/

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!