Download (5Mb) - oops/ - Oldenburger Online-Publikations-Server
Download (5Mb) - oops/ - Oldenburger Online-Publikations-Server
Download (5Mb) - oops/ - Oldenburger Online-Publikations-Server
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/