Bei der Planung definieren wir die Schnittstelle und die Umsetzung unserer Webservices.
siehe auch Webservice
Ein Webservice dient zur Kommunikation zwischen zwei Anwendungen. Dabei sendet der Client einen HTTP-Request mit der eindeutigen URI des Webservices. Der Webservice sendet im Erfolgsfall eine Response mit den Daten.
Vor der Realisierung eines Webservices steht die Planung.
Zu jedem Teilschritt finden Sie als Beispiel den Service „Bücherliste“ aus der Applikation „Bookshelf“.
Jeder Webservice soll eine einfache, klar definierte Aufgabe erledigen. Dadurch können die gleichen Services in verschiedenen Formularen und Applikationen eingesetzt werden.
Vermeiden Sie bei der Definition der Aufgabe Wörter wie und bzw. oder.
Der Webservices liefert eine Collection mit allen Büchern.
Jedem Webservice wird eine eindeutige URI zugeordnet. Diese URI besteht aus:
https
localhost
oder service.ghwalin.ch
:5000
bookshelf
library
Der Service für die Bücherliste soll unter http://localhost:5000/library erreichbar sein.
Die Umsetzung eines Webservices erfolgt in einer Klasse in einem Python-Modul. Durch die Wahl eines sprechenden Bezeichners können wir später die Klassen einfach identifizieren.
Ich nenne meine Ressource library_resource
bzw. die Klasse LibraryResource
.
Es gibt verschiedene Arten von HTTP-Requests. Diese Request-Arten unterscheiden sich aufgrund der Parameterübergabe und der Art der Response.
Vielleicht haben Sie schon von GET
und POST
gehört.
Dies sind zwar die häufigsten Arten, aber längst nicht die einzigen.
Einige Request-Arten stelle ich Ihnen hier näher vor.
Ein vollständige Liste finden Sie unter https://developer.mozilla.org/de/docs/Web/HTTP/Methods.
Art | Zweck | Parameter |
---|---|---|
GET | Daten lesen | URI |
POST | Neue Daten speichern | URI und Formulardaten |
PUT | Bestehende Daten ersetzen | URI und Formulardaten |
DELETE | Bestehende Daten löschen | URI |
Der Webservice „Bücherliste“ soll Daten lesen.
Daher verwende ich einen GET
-Request.
Manche Requests müssen dem Webservice Parameter bzw. Daten für die Verarbeitung liefern. Dabei unterscheiden wir zwischen verschiedenen Möglichkeiten zur Übermittlung der Parameter.
Query-Parameter werden in der URI mitgegeben. Sie bestehen immer aus einem Schlüssel und dem entsprechenden Wert.
Die URI https://moodle.bzz.ch/mod/lesson/view.php?id=8990&pageid=2390 enthält zwei Parameter:
Benutzereingaben in einem Formular können theoretisch auch in der URI übertragen werden. Allerdings sieht man dann im Browserverlauf, welche Eingaben gemacht wurden. Das ist spätestens bei Login-Formularen (Passwort!!) sehr schlecht.
In der Regel übertragen wir die Benutzereingaben im Datenteil des Requests.
Mein Webservice „Bücherliste“ erwartet keine Parameter.
Über den HTTP-Statuscode signalisiert der Service, ob die Verarbeitung erfolgreich war. Einige gebräuchliche Statuscodes sind:
Beim Senden der Daten in der Response stehen uns fast alle Möglichkeiten offen. Wir können vom einfachen Text, über ein einzelnes Objekt, bis hin zu Collections im Datenteil der Response senden. Oft bieten Services dem Aufrufer die Daten in unterschiedlichen Formate an, z.B. JSON, XML Wir beschränken uns vorerst auf das JSON-Format, da dieses sehr weit verbreitet ist. Ausserdem kann Flask selbständig einen Dictionary ins JSON-Format umwandeln.