Höchster Reifegrad für REST mit HATEOAS

December 6, 2016 - 10:24 pm in Software-Entwicklung

Das Erstellen einer sauberen REST-Schnittstelle ist nicht trivial. HATEOAS ermöglicht eine klare Struktur und Aufgabenteilung.

HATEOAS ist ein in den letzten Jahren viel diskutiertes Thema: Einige bezeichnen es für REST-Schnittstellen als unverzichtbar. Andere Autoren hängen es etwas tiefer auf und bezeichnen eine HATEOAS-konforme Schnittstelle lediglich als dritten und höchsten Reifegrad von REST. Leider gibt es noch keinen einheitlichen Standard, wie HATEOAS zu implementieren ist. Ziel dieses Artikels ist es, einen Überblick über aktuelle Entwicklungen zu geben und Argumente zu liefern, warum REST-Schnittstellen auf keinen Fall darauf verzichten sollten.

Eine kleine REST-Geschichte

Die folgende Geschichte einer REST-Schnittstelle soll sich in einem Unternehmen genau so abgespielt haben. Das Ziel war die Entwicklung einer Webseite, um Wetterdaten diverser Messstationen zu präsentieren und einzulesen.

Beispiel-Screenshot für die fiktive Anwendung (Abb. 1)
Beispiel-Screenshot für die fiktive Anwendung (Abb. 1) Vergrößern

Das Team beschließt, eine REST-Schnittstelle zu entwickeln, und hat die Hoffnung, sie später auch von Apps und IoT-Devices ansprechen zu können. Als vermeintlich schnellsten Ansatz programmiert es drei REST-Ressourcen, deren URL fest in den Clients verlinkt ist. Die Frage des Rechtemanagements am Client verschieben die Beteiligten auf später. Damit entsteht eine Schnittstelle, die dem Schema in Abbildung 2 entspricht.

Schematische Darstellung des simplen Service (Abb. 2)
Schematische Darstellung des simplen Service (Abb. 2) Vergrößern

Im nächsten Schritt wollen die Entwickler das Anlegen und Bearbeiten von Stationen durch eine Administratorrolle absichern. Um diese Information zugänglich zu machen, erstellen sie kurzerhand eine Ressource für Berechtigungen, die Abbildung 3 darstellt.

Der Service mit Administrator Berechtigung (Abb. 3)
Der Service mit Administrator Berechtigung (Abb. 3) Vergrößern

Der Ansatz ist problematisch, da er die Bedeutung der Administrator-Rolle an zwei Stellen verankert: Am Server, wenn dort ein Request eintrifft, und am Client, der evaluieren muss, ob der derzeitige Nutzer den entsprechenden Button sehen darf. Außerdem beeinflusst der Ansatz das Laufzeitverhalten des Clients maßgeblich, der erst nach dem Laden der Berechtigungen sinnvoll eine Anzeige aufbauen kann.

Will das Team anschließend die – grundsätzlich simple – Funktion einfügen, dass jeder Nutzer seine eigenen privaten Stationen anlegen und bearbeiten darf, steht es vor weitreichenden Schwierigkeiten. Für den Fall reicht es nicht mehr aus, eine zentrale Berechtigung zu vergeben, sondern die Rechte müssen an den Objekten selbst stehen. Deswegen hängt es an jede fachliche Stationsressource die Berechtigungen des jeweiligen Nutzers.

Berechtigungsressourcen an jeder Station (Abb. 4)
Berechtigungsressourcen an jeder Station (Abb. 4) Vergrößern

Ganz verfahren wird die Situation, wenn eine Anwendung die Berechtigungsinformationen bereits beim Laden der Liste aller Stationen benötigt, wie Abbildung 5 exemplarisch zeigt. Dann bleibt dem Entwicklerteam nichts anderes übrig, als die Berechtigungen mit in die fachlichen Transferobjekte hinein zu modellieren.

Funktionen zum Löschen und Bearbeiten sollen direkt in der Listenansicht verfügbar sein (Abb. 5).
Funktionen zum Löschen und Bearbeiten sollen direkt in der Listenansicht verfügbar sein (Abb. 5). Vergrößern

Read more on: Source

Goldeneye Ransomware greift gezielt Personalabteilungen an

December 6, 2016 - 10:10 pm in Security

Der Verschlüsselungstrojaner Goldeneye, der seit heute morgen 4 Uhr in Deutschland wütet, zielt direkt auf Personalverantwortliche in Firmen. Die Drahtzieher…

Raspberry Pi: Bezahlbares LTE-Funkmodul im Anmarsch

December 6, 2016 - 4:40 pm in Internet

Ein sparsamer LTE-Chip von Altair Semiconductor soll den Raspberry Pi mit Mobilfunknetzen verbinden. Anzeige Raspberry Pi 3 Modell B, Official Starter…

LLVM 4.0 für Ende Februar 2017 vorgesehen

December 6, 2016 - 4:22 pm in Software-Entwicklung

Mit Version 4.0 der Compilerinfrastruktur wird sich auch das Versionierungsschema ändern. Die bisherigen Punktreleases für größere neue Ausgaben machen nun immer einen großen Versionssprung. So wie es derzeit aussieht, wird die Version 4.0 von LLVM inklusive…

Kanadas Regierung überlegt Backdoor-Zwang

December 6, 2016 - 4:08 pm in Security

Die kanadische Regierung überlegt, die IT-Sicherheit zu unterminieren, um besser überwachen zu können. Nun sind die Bürger aufgerufen, ihre Meinung dazu mitzuteilen. Die kanadische Regierung denkt über neue Gesetze nach, um Polizei und Geheimdiensten…

Kanadas Regierung überlegt Backdoor-Zwang

December 6, 2016 - 10:35 am in Internet

Die kanadische Regierung überlegt, die IT-Sicherheit zu unterminieren, um besser überwachen zu können. Nun sind die Bürger aufgerufen, ihre Meinung dazu mitzuteilen. Die kanadische Regierung denkt über neue Gesetze nach, um Polizei und Geheimdiensten…

Update soll Raspbian gegen IoT-Angriffe wappnen

December 6, 2016 - 10:25 am in OSS

Ein Raspberry Pi ist eine günstige Basis für IoT-Projekte. Angreifer finden mit den Rechnern aber auch einfach zu kapernde Systeme für Botnetze. Ein Update für Raspbian soll Attacken von schweren Jungs künftig erschweren. Nachdem sich das Internet der…

OpenAI will Videospiele zum Training für AI-Software verwenden

December 6, 2016 - 10:20 am in Software-Entwicklung

Die Forschungseinrichtung hat eine Schnittstelle entwickelt, mit der intelligente Agenten Computer ähnlich wie Menschen bedienen können. Damit lassen sich AI-Programme beispielsweise mit Portal und Civilization trainieren. OpenAI hat mit Universe ein Projekt…

Update soll Raspbian gegen IoT-Angriffe wappnen

December 6, 2016 - 10:07 am in Security

Ein Raspberry Pi ist eine günstige Basis für IoT-Projekte. Angreifer finden mit den Rechnern aber auch einfach zu kapernde Systeme für Botnetze. Ein Update für Raspbian soll Attacken von schweren Jungs künftig erschweren. Nachdem sich das Internet der…

Jochen Mader, Jens Deters: IoT-Datenverarbeitung im Big-Data-Umfeld mit Vert.x-MQTT, Kafka und Apache Spark

December 6, 2016 - 4:15 am in Software-Entwicklung

Das Internet der Dinge ist für zahlreichen Branchen ein umfangreiches Big-Data-Thema. Dabei reicht es selten aus, Daten über Nacht zu berechnen, sondern es ist erforderlich, Ergebnisse im Bereich von Sekunden und Millisekunden bereitzustellen. Im Umfeld…