Zum Inhalt

MobiLec-Webservice

Für automatische Abfragen, Importe oder Exporte stellt MobiLec einen Webservice mit dokumentierter Schnittstelle zur Verfügung. Es sind zurzeit nur die beschriebenen Abfragemöglichkeiten implementiert. Diese kann beliebige erweitert werden. Dabei wird Vesucht die Kompatibilität mit der ursprünglichen beschiebenen Schnittstelle nicht zu zerstören.

Prinzipielle Funktionsweise

Durch die hohe Anzahl an evtl. anfallenden Datensätzen und den dadurch steigenden Netzwerkverkehr, die bei bestimmten Funktionsaufrufen auftreten könnten, können diese nur mit einem entsprechenden Filter aufgerufen werden.

Voraussetzungen

Für die Datenabfrage wird eine HTTP-Autentifizierung durchgeführt, mit dem sich der Benutzer gegenüber dem MobiLec-Webservice als Benutzer mit Login-Name und Passwort authentifizieren muss. Als Authentifizierungs-Verfahren wir die Basic Authentication eingesetzt. Die HTTP-Kommunikation mit MobiLec erfolgt ausnahmslos über eine Secure-Socket-Layer-Verschlüsselung kurz SSL. Dadurch ist die nötige Sicherheit bei Datenaustausch von Anmeldeinformationen, sowie MobiLec-Daten gewährleistet. Der Zugriff auf die MobiLec-Daten über den Webservice ist nur möglich, wenn die entsprechenden Nutzungsrechte eingerichtet sind.

Datenstruktur

Die durch MobiLec verwalteten Daten besitzen eine hohe Anzahl an Integritätsbedingungen untereinander. Dadurch ist eine Konsistenz der Datenbank gewährleistet. Diese Strukturen durch einen WebService zugänglich zu machen würde es erfordern, ein genaues Abbild des Datenmodels auf Konsumenten-Seite zu erzeugen. Durch die andauernde Entwicklung an dem MobiLec-Datenmodell müssten zusätzliche Anpassungen und Erweiterungen an dem WebService-Anwender erfolgen. Dies macht es notwendig, die Daten in einem vereinfachten Datenmodell zu veröffentlichen. Diese Datenstruktur enspricht weitesgehend der Tabellenstruktur des SQL Servers. Der hierasche Aufbau wird über Indexe hergestellt.

Datenaustausch

Aufbau einer Webservice Anfrage

Webservices Anfragen benötigen in der Regel mindestens eine Query zur Reduzierung der zu übertragenen Datenmenge. Zusätzliche Queries können zur Filterung der Daten eingesetzt werden.

URL-Aufbau: BasisURL/Pfad?query1[&query2][&query3] …

Bei Webservice Anfragen mit überschaubarer Datenmenge sind Queries optional. Ohne Query liefert die Webservice Anfrage alle Datensätze aus der MobiLec Datenbanktabelle.

URL Aufbau: BasisURL/Pfad[?query1][&query2] …

Beispiel Parameter:

BasisUrl:

https://www.mobilec.de/webservice

Pfad: z.B.: company.aspx

Query: z.B.: index_equals=1

Die wichtigsten Query-Parameter

index_equals: prüft einen Index (Integer) Wert auf Gleichheit

name_equals: prüft ob der Name gleich der Zeichenkette (String) ist

name_contains: prüft ob im Namen die Zeichenkette enthalten ist

name_startswith: prüft ob der Name mit der Zeichenkette beginnt

date_after: prüft ob das Datum nach einem bestimmten Zeitpunkt war

date_before: prüft ob das Datum vor einem bestimmten Zeitpunkt war

URL Encoding für Query-Werte

Für die Übergabe von Werten wird URL Encoding verwendet.

ASCII Encoding
space %20
& %26

Beispiel: "Wurm GmbH & Co KG" -> "Wurm%20GmbH%20%26%20Co%20KG"

Abfrage:

https://www.mobilec.de/webservice/companyjsonv1.aspx?name_startswith=Wurm%20GmbH%20%26%20Co%20KG

liefert die Webantwort:

{"data":[{"Index":1,"Name":"Wurm GmbH & Co KG"}],"error":""}

zeitliche Eingrenzung: nach 19.04.2016 12:33:40 und vor 19.04.2016 12:33:41

Abfrage:

https://www.mobilec.de/webservice/RefrigerantMovementJsonV1.aspx?unitindex_equals=5869&date_after=19.04.2016%2012:33:40&date_before=19.04.2016%2012:33:41

liefert die Webantwort:

{"data":[{"Index":85058,"UserIndex":360,"UnitIndex":5869,"MovementReasonIndex":7,"OperatorIndex":14,"RefrigerantIndex":1,"FillAmount":100,"DateString":"19.04.2016 12:33:40"}],"error":""}

Datenformat

Für die Datenrückgabe wird das Json Format verwendet.

Datenrückgabe ohne Fehler:

{"data":[{"Index":1,   }, {"Index":2,   }, ],"error":""}

Keine Daten gefunden:

{"data":[],"error":""}

Fehler aufgetreten:

{"data":[],"error":"index_equals has invalid value: s"}