Ein REST-Client in MATLAB

Im Theorieteil haben Sie bereits die wesentlichen Eigenschaften eines Webdienstes, der auf der REST-Technologie basiert, kennengelernt. Doch was bedeutet das nun für die Praxis mit MATLAB?

Da alle RESTful Webservices auf dem HTTP-Protokoll basieren, muss MATLAB also eine HTTP-Anfrage an den Webserver stellen. MATLAB kann durch die Benutzung des Befehls urlread(URL) eine HTTP-Anfrage an einen Webserver stellen. Die Funktion liefert dann die Antwort des Webservers als Zeichenkette zurück.

 

Beispiel: Summenservice

Wie schon im Beispiel im SOAP-Teil dieses Tutorials geschehen, werden wir nun einen Service Summe aufrufen, der die Summe von zwei Ganzzahlen errechnet und zurückliefert. Jedoch werden wir dieses Mal keinen SOAP-Webservice aufrufen, sondern einen RESTful Webservice.

Der RESTful Webservice wurde bereits implementiert und ist über den Pfad

http://iktwebservice.iim.maschinenbau.tu-darmstadt.de:8080/Summe/res/Summe/{a}/{b}

(Achtung: Dieser Link funktioniert nicht, da er Platzhalter {a} und {b} enthält.)

erreichbar. Im Pfad werden durch die beiden Platzhalter „{a}“ und „{b}“ die Eingangsvariablen a und b, aus denen die Summe berechnet wird, dem Webdienst übergeben. Als Ergebnis wird die Summe  aus a und b vom Webdienst als Zeichenkette zurückgegeben.

Wir definieren also zunächst in MATLAB zwei Variablen a und b und befüllen Sie mit Beispielwerten:

a = 5;

b = 6;

Danach muss der vollständige Pfad mit den beiden konkreten Werten von a und b in MATLAB erzeugt werden:

pfad = [‘http://iktwebservice.iim.maschinenbau.tu-darmstadt.de:8080/Summe/res/Summe/‘ num2str(a) ‘/’ num2str(b)];

Nun muss der Webservice mittels des MATLAB-Befehls urlread aufgerufen werden.

antwort = urlread(pfad);

(Achtung: Dieser Befehl funktioniert so nur an einem Computer im IiM-Pool.)

Wie oben beschrieben, ist die Antwort des Webdienstes eine Zeichenkette mit dem Ergebnis der Summenoperation, also wandeln wir die Zeichenkette in einen numerischen Wert um.

ergebnis = str2num(antwort);

Das Ergebnis liegt also nun als numerischer Wert vor.

 

 

 

WetterService in REST

Achtung: Die folgenden Links funktionieren nur an einem Computer im IiM-Pool.

Der Webdienst WetterService bietet eine Möglichkeit, auf Messwerte von verschiedenen Wetterstationen zuzugreifen. Für die Praxisübung wurde ein solcher Webdienst mittels der REST-Technologie erstellt. Um die Datenmenge überschaubar zu halten, sind aber nur die Messwerte von 7 Wetterstationen im Jahre 2014 verfügbar.

Rufen Sie die Webseite

http://iktwebservice.iim.maschinenbau.tu-darmstadt.de:8080/WetterService/res/WetterStationen

auf. Sie sehen eine Liste der Wetterstationen mit den jeweiligen IDs und Orten. Über diese IDs werden die Wetterstationen identifiziert.

Sie möchten nun die Messwerte der Wetterstation Bremen einsehen. Laut URL-Konvention, die für diesen Webdienst erstellt wurde, lautet die URL für dieses Vorhaben:

http://iktwebservice.iim.maschinenbau.tu-darmstadt.de:8080/WetterService/res/WetterStationen/691

Wenn Sie die Tageswerte vom 7. März 2014 abrufen möchten, rufen Sie folgende Webseite auf:

http://iktwebservice.iim.maschinenbau.tu-darmstadt.de:8080/WetterService/res/WetterStationen/691/20140307

Sie sehen eine Liste der stündlichen Messwerte vom 07. März 2014 im HTML-Format. Beachten Sie, dass das Datum hier im Format YYYYMMDD übergeben wird, wobei YYYY für das Jahr, MM für den Monat und DD für den Tag steht. Wenn Sie nun mit ihren eigenen Programmen diese Messwerte auswerten möchten, könnte ein XML-Format besser geeignet sein, als die HTML-Darstellung.

Um die Tageswerte im XML-Format zu erhalten, wurde in diesem Webdienst ein Zusatzparameter format eingebaut. Um den Zusatzparameter zu nutzen, wird der URL ein Fragezeichen und eine mit dem UND-Zeichen & separierten Parameterliste angehängt. Jeder Parameter wird nach dem Aufbau name=wert dargestellt.

Die URL, um die Tageswerte im XML-Format zu erhalten, lautet also:

http://iktwebservice.iim.maschinenbau.tu-darmstadt.de:8080/WetterService/res/WetterStationen/691/20140307?format=xml

 

 

Das CSV-Format

Das CSV (comma separated values) - Format trennt die Datensätze durch einen Zeilenumbruch. Innerhalb jedes Datensatzes werden die Datenspalten durch Kommata getrennt. In der ersten Zeile werden die Spaltennamen übertragen.

Ein Beispiel für eine Datei im CSV-Format ist:

Stunde,Temperatur
0,7.8
1,6.4
2,5.0
3,4.3
4,3.3
5,6.9
6,10.8
7,12.2
8,13.8
9,14.6
10,15.3
11,16.2
12,17.0
13,18.1
14,17.1
15,18.8
16,18.5
17,18.5
18,17.2
19,15.8
20,14.8
21,11.1
22,9.3
23,9.9

Hinweis: Wenn in einer Datenspalte ein Komma vorkommt, muss der Inhalt in Anführungszeichen gesetzt werden, damit klar ist, welches Komma zur Separation der Datenspalten verwendet wird.

 

Die URL, um die Tageswerte des Wetterservices im CSV-Format zu erhalten, lautet:

http://iktwebservice.iim.maschinenbau.tu-darmstadt.de:8080/WetterService/res/WetterStationen/691/20140307?format=csv

Hinweis: Um einen String im CSV-Format zu parsen, verwenden Sie die MATLAB-Funktion strsplit. Diese Funktion teilt einen String anhand eines übergebenen Trennzeichens als zweiten Aufrufparameter in Arrayelement auf. Sie können diese Funktion unter Benutzung von ' ' als zweiter Aufrufparameter nutzen, um die Zeilen in einem String als Arrayelemente zu erhalten.