codestory

Was ist RESTful Web Service?

  1. Web vs Web Service
  2. Was ist RESTful Service?
  3. Die HTTP Methode klar benutzen
  4. Zustandlos (Stateless)
  5. Die Verzeichnisstruktur wie URI geben
  6. XML, JSON oder beide übertragen
  7. Java RESTful Service für den Anfänger

1. Web vs Web Service

Vor der Anwort der Frage über RESTful möchte ich Sie die Unterschied zwischen web und web service machen.
Wenn Sie ein URL in einem Browser typen, erhalten Sie eine Website. Das ist die Inhalt, die Sie normalerweise lesen können. Das ist die Inhalt für den letzten Benutzer
Inzwischen ist Web Service eine Dienstleistungsweb. Das ist ein breitere Begriff. Sie bietet die rohen und schwierig zu verstehen Information für den Benutzer. Deshalb wird sie durch die Applikation benutzt. Die Applikation bearbeitet die rohen Daten bevor sie den letzten Benutzer zurückgibt.
Zum Beispiel: Sie gehen in einer ABC-Website um die Wetter und Börse zu lesen, zeigt die Webseite Ihre gewünschten Informationen .

Um diese Daten über das Wetter zu schaffen, muss die ABC Applikation die Information aus einer Quelle nehmen. Das kann eine Web-Service sein, die die Information der Wetterdaten von den unterschiedlichen regionen bietet.
Ähnlich, um die Daten über die Börse zu schaffen, muss die ABC Applikation mit der Service zu dieser Datenversorgung kontaktieren. Die Daten werden bearbeitet bevor sie Ihnen eine volle Webseite rückgibt
Die Web Service versorgt normalerweise die rohen und schwierig zu verstehen Daten für die meisten Benutzer. Sie werden oft in der Format von XML oder JSON zurückgegeben

2. Was ist RESTful Service?

RESTful Web Service ist eine Web Service , die die REST Struktur benutzt. REST wird breit benutzt, das die Web Service basiert auf SOAP undWSDL ersetzt.RESTful Web Service ist leicht (lightweigh), einfach zu verlängern und unterhalten.
Die ersten Begriff vom REST (REpresentational State Transfer) wurde im Jahr 2000 im doctoral Dissertation vom Roy Thomas Fielding eingeführt (Der Mitbegründer vom HTTP Protokoll). In der Dissertation stellte er die Zwangen (constrains), die Regelung sowie den Weg zur Durchführung im System vor um ein REST System zu erreichen
REST definiert die Architekturregelung um Web services zu designieren, das auf die Systemressource achten, umfassend wie die Ressourcenzustand formatiert wird und durch HTTP übertragen und in vielen verschiedenen Sprache geschrieben wird. Wenn nach der Anzahl der benutzten Web service wird REST in den letzten Jahren wie eine dominante Web Service Design Modelle geworden. In der Praxis hat REST die großen Auswirkungen und ersetzt fast SOAP und WSDL denn es ist mehr einfach und leicht zu benutzen.
REST ist ein Set der Regelung um eine Applikation Web Service zu erstellen, und es befriedigt die 4 folgenden Design-Prinzipien
  • Die HTTP Methode klar benutzen
  • Zustandlos sein
  • Die Verzeichnisstruktur wie URIs anzeigen
  • JavaScript Object Notation (JSON), XML oder beide übertragen
Im Wort RESTful ist ful das Suffix in englisch, wie help bedeutet helfen und helpful ist nutzlich

3. Die HTTP Methode klar benutzen

REST setzt eine Regelung, die den Programmer die Festlegung seiner Absicht durch die HTTP Protokoll fordert. Normalerweise fasst die Absicht die Datenaufnahme, die Daten einfügen, die Daten aktualliseren oder löschen. Deshalb achten Sie auf die folgenden Regelungen wenn Sie eine der oben Absicht durchführen möchten
  • Um eine Ressource auf dem Server zu erstellen, benutzen Sie POST.
  • Um eine Ressource zu retrieve, benutzen Sie GET.
  • Um den Zustand einer Ressource zu ändern oder zu aktualliseren, benutzen Sie PUT.
  • Um eine Ressource abzusagen oder löschen, benutzen Sie DELETE.
beachten Sie: die oben Regelungen sind nicht obligatorisch, in der praxis können Sie die Methode GET um die Daten auf dem Server zu nehmen, hinzufügen, ändern oder zu löschen. Allerdings gibt REST die oben Regelungen damit die Dinge mehr klar und verständlich werden.

das folgende Beispiel bezeichnet den Weg, dass Sie GET benutzen um die Daten auf dem Server hinzuzufügen (Achtung: das ist das Gegenteil von der Regelung vom REST).
Benutzen Sie GET um einen Benutzer mit dem Name Robert mehr anzufordern.
GET /adduser?name=Robert HTTP/1.1
Benutzen Sie GET um den Server zur Änderung der Name des Benutzer Robert zu Smith anzufordern.
GET /updateuser?name=Robert&newname=Smith HTTP/1.1
Und jetzt sind alle Ding nach der Regelungen vom REST klarer
Den Befehl HTTP POST schicken um die Daten einzufügen
POST /users/Robert HTTP/1.1
Host: myserver
Content-Type: application/xml
<?xml version="1.0"?>
<user>
<name>Robert</name>
</user>
Einen Befehl von GET schicken wenn Sie die Daten auf dem System nehmen möchten
GET /users/Robert HTTP/1.1
Host: myserver
Accept: application/xml
Einen Befehl PUT schicken wenn Sie die Daten aktuallisieren möchten
PUT /users/Robert HTTP/1.1
Host: myserver
Content-Type: application/xml
<?xml version="1.0"?>
<user>
 <name>Smith</name>
</user>
Den Befehl DELETE schicken wenn Sie die Daten löschen möchten
DELETE /users/Robert HTTP/1.1

4. Zustandlos (Stateless)

Eine Eigenschaft vom REST ist zustandlos (stateless),d.h es speichert die Information vom client nicht. z.B Sie schicken eine Anforderung, die 2.Seite eines Unterlagen zu sehen und jetzt möchten Sie die nächste Seite ( Seite 3) sehen. REST speichert die Information über die vorherige Anforderung nicht ( die Seite 2 sehen). D.h REST managiert die Session nicht
Das folgende Foto bezeichnet eine Applikation mit der Zustansspeicherung. Es kennt, welche Seite der Benutzer gerade liest. Und der Benutzer schickt nur die Anforderung "Die nächste Seite" um die gewünchste Seite zu erhalten
Mit den zustandlosen Design muss Client die klare Anforderung, die die Seitenzahl, die Sie lesen möchten umfasst
So ist die zustandlosen Server-components weniger kompliziert um durch load-balanced server zu entwerfen, schreiben und verteilen. Die zustandlose Dienstleistung funktionier nicht nur besser, sondern übertragt sie die Aufgabe zur Unterhaltung des Zustand nach der Client-Applikation. In einer RESTful Web Service trägt der Server die Anwortung für die Erzeugung der Rückanwort und für die Versorgung der Interface, damit der Klient den Applikationszustand beibehalten kann.

5. Die Verzeichnisstruktur wie URI geben

REST gibt eine Struktur damit der Benutzer in seiner Ressource durch URL zugreifen kann. Die Ressource hier sind alle Dinge, die Sie nennen können (Video, Foto, Wetterbericht,..)
Sie brauchen die REST SERVICE erstellen damit sie dem Benutzer die entsprechenden Ressourcen zurückgibt
Die URI von REST Service muss so nachvollziehbar sein daß der Benutzer leicht vermuten kann. Denken Sie an eine URI wie einen klaren Hinweis und es ist leicht zu vermuten, zu was es zeigt und was es versorgt. Zummenfassend ist die Struktur von URI sehr einfach, leich hervorzusagen und zu verstehen
Sehen Sie die folgende URL. Es bietet die Information der Wetter einer Region mit dem entsprechenden Tag und es ist dem Benutzer leicht zu verstehen
http://myservice.com/weather/chicago/2016-09-27

http://myservice.com/weather/hanoi/2016-11-11
Einige zusätzlichen Grundsätze sollen Sie beachten wenn wir die URI Struktur vom RESTful Web Service erwähnen
  • Die FileExtension von der Urschrift im Server (.jsp, .php, .asp) verstecken. Wenn ja, so können Sie einige Dinge ohne die Änderung der URIs verstecken.
  • Alle Dinge in die kleinen Buchstabe halten
  • Den Leerzeichen durch den Unterstrich oder den Bindestrich ersetzen (einen der 2 Strich).
  • Die Anforderungstring so viel as möglich.
  • Statt der Benutzung der Code 404 Not Found wenn die Anforderung URI einen Pfad gibt, immer eine Default Seite oder Ressource wie eine Rückanwort versorgen.

6. XML, JSON oder beide übertragen

Wenn der Client eine Anforderung nach Web Service schickt, wird sie in der Format von XML oder JSON gelegt und normalerweise mit der ähnlichen Formats zurückgehaltet.
Manchmal kann Client die zurückgegebenen Daten in seiner gewünschten Format bestimmen (JSON, oder XML,..). Die Bestimmung wird das Typ von MINE genannt und sie wird mit dem HEADER von der Anforderung geschickt.

Unten sind die üblichen Type vom MINE mit REST service.
JSON
application/json
XML
application/xml
XHTML
application/xhtml+xml
Z.B Client schickt eine Anforderung zur Aufnahme der Wetterinformation und möchten die zurückgegebenen Daten in der XML Format erhalten
GET /weather/chicago/2016-08-27 HTTP/1.1
Host: myservice.com
Accept: application/xml;q=0.5
Und die Daten bekommen wir
<weather>
    <date>2016-08-27</date>
    <location>Chicago</location>
    <info>Hot</info>"//
</weather>
Falls der Client die zurückgegebenen Daten in der Format von JSON fordert
{
 "date": "2016-08-27",
 "location": "Chicago",
 "info": "Hot"
}