Die RESTlichen Dinge im Internet

RESTful Web Services im Internet der Dinge
Kommentare

RESTful Web Services und den damit assoziierten ressourcenorientierten Architekturen (ROA) wurde in letzter Zeit viel Aufmerksamkeit zuteil. Die Prinzipien von REST und die eingesetzten Technologien sind nicht neu, sondern wurden im Wesentlichen in den späten neunziger Jahren und im Jahr 2000 entwickelt. Dennoch hat der Einsatz von REST bei der Entwicklung von verteilten Systemen erst in den letzten Jahren deutlich an Fahrt aufgenommen. Viele Unternehmen – darunter namhafte wie Amazon, Google, Yahoo und Dropbox – bieten heute ihre Dienste auch über REST-Schnittstellen an. REST wird sehr wahrscheinlich eine zentrale Rolle bei der Entwicklung des Internets der Dinge spielen.

Die Abkürzung REST [1] steht für „Representational State Transfer“ und bezeichnet einen architekturalen Stil für den Bau von verteilten Systemen. Im Kern geht es bei REST darum, bestehende und erprobte Webstandards wie HTTP einzusetzen und dabei eine Reihe von Prinzipien zu beachten. Stefan Tilkov [2] hat diese Prinzipien wie folgt zusammengefasst:

  • Gib jedem „Ding“ einen eindeutigen Identifier. Benutze URIs zur Identifikation von „Dingen“ in einem globalen Namensraum. Statt von „Dingen“ spricht man bei REST von Ressourcen.
  • Benutze Links, um „Dinge“ zu referenzieren und Beziehungen zwischen ihnen zu modellieren. Erst Links machen das Web zum Web.
  • Benutze standardisierte Methoden für den Zugriff auf „Dinge“. HTTP bietet alles, was man braucht, um CRUD-Operationen auszuführen – GET, PUT, POST, DELETE und eine Reihe anderer Methoden, die alle eine wohldefinierte Semantik haben. Der Einsatz standardisierter Methoden trägt wesentlich zur Vereinheitlichung von REST-Schnittstellen bei – hat man erst einmal eine verstanden, versteht man jede.
  • Stelle mehrere, für den jeweiligen Zweck optimale Repräsentationen für „Dinge“ bereit, wie z. B. XML, JSON oder HTML.
  • Kommuniziere zustandslos. Der Applikationszustand wird nur vom Client, der Zustand der „Dinge“ nur vom Server verwaltet. Dieses Prinzip ist grundlegend für die Skalierbarkeit des heutigen Internets.

REST und das Internet der Dinge (und Dienstleistungen) sind wie füreinander geschaffen. Implementierungen von REST-Schnittstellen können sehr leichtgewichtig sein – HTTP-Clients und -Server sind mittlerweile auch auf den kleinsten IP-fähigen Plattformen verfügbar.

Die zentrale Abstraktion bei REST ist, wie erwähnt, die Ressource (bei serviceorientierten Architekturen ist es der Dienst). Diese Abstraktion passt perfekt in die Welt von eingebetteten, verteilen Regelungssystemen; Sensoren, Aktoren und Regelungssysteme und die Dienste, die sie anbieten, lassen sich elegant als Ressourcen und REST-Schnittstellen modellieren. Das sind nur einige der Gründe, warum REST für die eingebetteten Systeme, die wir bei Bosch bauen, attraktiv ist.

Ein Beispiel

Hier ein (vereinfachtes) Beispiel aus der Heizungstechnik. Es illustriert, wie eine REST-Schnittstelle mit einer JSON-Repräsentation verwendet werden kann, um eine Heizung fernzusteuern. Frage die vorhandenen Räume ab:

GET http://mein.haus.de/heizung/raeume

liefert

Status 200 (OK)
    "[ { 'id':'wohnzimmer', 
          'uri': 'http://mein.haus.de/heizung/raeume/wohnzimmer' },
       { 'id':'bad',
         'uri': 'http://mein.haus.de/heizung/raeume/bad' } ]"

Es werden nicht nur die Namen der Räume, sondern auch die URIs der Ressourcen, die die Räume repräsentieren, mitgeliefert. Frage die aktuelle Raumtemperatur im Wohnzimmer ab:

GET http://mein.haus.de/heizung/raeume/wohnzimmer/temp  

liefert

    Status Code 200 (OK)
       "{ 'temp':'20.2', 'unit':'celsius' }"

Setze die Solltemperatur im Wohnzimmer auf 21°C:

PUT http://mein.haus.de/heizung/raeume/wohnzimmer/sollTemp

mit Anhang

      "{ 'temp':'21.0' }"  

liefert

      Status Code 204 (NO CONTENT)

Schalte die Heizung während meines Kurzurlaubs nächste Woche Wochenende ausnahmsweise auf Frostbetrieb:

POST http://mein.haus.de/heizung/heizplan/ausnahmen

mit Anhang

      "{ 'start': '2012-10-19T18:00',
       'end':   '2012-10-21T21:00',
      'modus': 'frost' }"

liefert

Status Code 201 (CREATED)
"http://mein.haus.de/heizung/heizplan/ausnahmen/12"

Oder noch besser: Benutze meinen Onlinekalender, um bei Urlaub automatisch die Heizung in den Frostbetrieb und bei einer Party automatisch eine Stunde vorher in den Heizmodus zu schalten:

PUT http://mein.haus.de/heizung/heizplan/calendar-control

mit Anhang

                      "{ 'cal':'http://www.ocal.de',
                    'user':'haeusle@bauer.de',
                    'pwd':'schaffeschaffe',
                    'vcal-mappings': [
                      {'name-equals':'Urlaub',
                       'mode':'frost'},
                      {'name-contains':'Party',
                       'mode':'high',
                       'in-advance','60'}
                    ]
                   }"
Erfahrung bei Bosch

Ich habe in meiner Arbeit für die Bosch-interne FusionX-Community mehrere REST-Schnittstellen für verschiedene Domänen wie z. B. Heizungstechnik und Fahrzeugtechnik entwickelt. Diese Schnittstellen haben wir erfolgreich in mobilen Endgeräten und Browsern eingesetzt. Bosch Thermotechnik hat auf Basis einer unserer Schnittstellen einen Internet-Gateway [3] entwickelt, der den Fernzugriff auf Bosch-Heizungen erlaubt. Andere Geschäftseinheiten evaluieren bzw. planen den Einsatz von ähnlichen REST-Schnittstellen in ihren Produkten. Alles in allem ist REST auf dem besten Wege, eine Basistechnologie für Bosch zu werden.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -