Übersicht über REST. Teil 1: Was ist REST? In diesem Teil werden wir uns eingehend damit befassen, wie die Kommunikation zwischen einem Client und einem Server stattfindet. Ganz nebenbei entdecken wir neue Begriffe und erklären diese.
Damit alles klar ist, analysieren wir die Client-Server-Kommunikation am Beispiel einer RESTful-Anwendung. Angenommen, wir entwickeln eine Webanwendung, die Informationen über Kunden und ihre Bestellungen speichert. Mit anderen Worten: Unser System ist in der Lage, Operationen an bestimmten Entitäten durchzuführen: sie zu erstellen, zu bearbeiten und zu löschen und Informationen über sie anzuzeigen. Diese Einheiten werden sein:

- Kunden (Kunden)
- Bestellungen (Kundenbestellungen)
- Artikel (Produkte)
Anfragen
Clientanfragen werden fast immer über das HTTP-Protokoll gestellt. Im Allgemeinen bestehen HTTP-Anfragen aus mehreren Komponenten:- HTTP-Methode
- Header
- URI
- Anfragetext
URIs und Ressourcen
Die Daten, die Clients durch Anfragen erhalten oder ändern, werden als Ressourcen bezeichnet. Bei der Client-Server-Kommunikation geht es vor allem um die Manipulation von Ressourcen. In REST sind Ressourcen alles, was Sie benennen können. In gewissem Sinne sind sie wie Klassen in Java. In Java können wir für alles eine Klasse erstellen. In REST kann eine Ressource also alles sein: ein Benutzer, ein Dokument, ein Bericht, eine Bestellung. Dabei kann es sich entweder um eine Abstraktion einer Entität oder um etwas Bestimmtes handeln, beispielsweise um ein Bild, ein Video, eine Animation oder eine PDF-Datei. In unserem Beispiel haben wir 3 Ressourcen:- Kunden (Kunden)
- Bestellungen (Kundenbestellungen)
- Artikel (Produkte)
- /customers – URI aller verfügbaren Kunden
- /customers/23 – URI eines bestimmten Kunden, dh des Kunden mit der ID=23
- /customers/4 – URI eines bestimmten Kunden, dh des Kunden mit der ID=4.
- /customers/4/orders – URI aller Bestellungen von Kunde Nr. 4
- /customers/1/orders/12 – URI der Bestellung Nr. 12, erstellt von Kunde Nr. 1.
- /customers/1/orders/12/items – URI der Liste aller Produkte in Bestellung Nr. 12, die von Kunde Nr. 1 erstellt wurden.
HTTP-Methode
Die HTTP-Methode ist eine Folge beliebiger Zeichen (außer Steuerzeichen und Trennzeichen), die den Hauptvorgang angibt, der an der Ressource ausgeführt wird. Es gibt mehrere gängige HTTP-Methoden. Wir listen diejenigen auf, die in RESTful-Diensten am häufigsten verwendet werden:- GET – Informationen zu einer bestimmten Ressource (über ihre ID) oder zu einer Sammlung von Ressourcen abrufen
- POST – Erstellen Sie eine neue Ressource
- PUT – Eine Ressource ändern (über ihre ID)
- DELETE – Eine Ressource löschen (über ihre ID)
Überschriften
Sowohl Anfragen als auch Antworten enthalten HTTP-Header. Sie übermitteln zusätzliche Informationen zur Anfrage (oder Antwort). Header sind Schlüssel-Wert-Paare. Die Liste der häufigsten Überschriften finden Sie auf Wikipedia . Was REST betrifft, senden Clients in Anfragen an den Server häufig einen „Accept“-Header. Dieser Header wird benötigt, um dem Server mitzuteilen, in welchem Format der Client eine Antwort erwartet. In einer Liste von MIME-Typen sind verschiedene Formate aufgeführt. MIME (Multipurpose Internet Mail Extensions) ist eine Spezifikation zum Kodieren von Informationen und Formatieren von Nachrichten, damit sie über das Internet gesendet werden können. Jeder MIME-Typ besteht aus zwei durch einen Schrägstrich getrennten Teilen – einem Typ und einem Subtyp. Beispiele für MIME-Typen für verschiedene Dateitypen:- Text – Text/Plain, Text/CSS, Text/HTML
- Bild – Bild/PNG, Bild/JPEG, Bild/GIF
- Audio – Audio/WAV, Audio/MPEG
- Video – Video/mp4, Video/ogg
- Anwendung – Anwendung/json, Anwendung/pdf, Anwendung/xml, Anwendung/Oktett-Stream
Accept:application/json
Dieser Header teilt dem Server mit, dass der Client eine Antwort im JSON-Format erwartet.
Anforderungstext
Dies ist die Nachricht, die der Client an den Server sendet. Ob die Anfrage einen Textkörper hat oder nicht, hängt von der Art der HTTP-Anfrage ab. Beispielsweise enthalten GET- und DELETE-Anfragen im Allgemeinen keinen Anfragetext. Aber PUT- und POST-Anfragen können das – es hängt nur vom Zweck der Anfrage ab. Denn um Daten über eine ID (die in der URL übergeben wird) zu empfangen und/oder zu löschen, müssen Sie keine zusätzlichen Daten an den Server senden. Um jedoch eine neue Ressource zu erstellen (über eine POST-Anfrage), müssen Sie die Ressource senden. Das Gleiche gilt für die Änderung einer vorhandenen Ressource. In REST wird der Anforderungstext meist im XML- oder JSON-Format gesendet. Am gebräuchlichsten ist das JSON-Format. Angenommen, wir möchten eine Anfrage an den Server senden, um eine neue Ressource zu erstellen. Wenn Sie es nicht vergessen haben, Wir haben das Beispiel einer Anwendung betrachtet, die Kundenaufträge verwaltet. Nehmen wir an, wir möchten einen neuen Kunden erstellen. In unserem Fall speichern wir folgende Kundeninformationen: Name, E-Mail, Telefonnummer. Dann könnte der Hauptteil der Anfrage der folgende JSON sein:
{
"name" : "Amigo",
"email" : "amigo@jr.com",
"phone" : "+1 (222) 333-4444"
}
Anfragen zusammenstellen
Deshalb haben wir untersucht, was in einer Kundenanfrage enthalten sein könnte. Wir geben nun einige Beispiele für Anfragen mit BeschreibungenAnfrage | Beschreibung |
---|---|
|
Erhalten Sie Informationen zu Kunde Nr. 23 im JSON- oder XML-Format |
|
Erstellen Sie einen neuen Kunden mit den folgenden Feldern: Name – Amigo E-Mail – amigo@jr.com Telefonnummer – +1 (222) 333-4444 |
|
Bearbeiten Sie Kunde Nr. 1 wie folgt: Name – Ben E-Mail – bigben@jr.com Telefonnummer – +86 (868) 686-8686 |
|
Löschen Sie die Bestellung Nr. 6 des Kunden Nr. 12 aus dem System |
Antworten
Lassen Sie uns ein paar Worte zu den Serverantworten sagen. Eine Antwort besteht in der Regel aus folgenden Teilen:- Antwortcode
- Kopfzeilen
- Antwortkörper
HTTP-Antwortcodes
Betrachten wir die HTTP-Antwortcodes genauer. Ein HTTP-Statuscode ist Teil der ersten Zeile einer Serverantwort auf Anfragen, die über das HTTP-Protokoll gestellt werden. Es ist eine ganze Zahl, die aus drei Dezimalstellen besteht. Die erste Ziffer gibt die Klasse des Antwortstatuscodes an. Auf den Antwortcode folgt normalerweise ein erklärender Satz in englischer Sprache, getrennt durch ein Leerzeichen. Dieser Satz ist ein für Menschen lesbarer Grund für die Antwort. Beispiele:- 201 erstellt
- 401 nicht Autorisiert
- 507 Nicht genügend Speicherplatz
- 1XX – Zur Information
- 2XX – Diese Codes zeigen an, dass die Anfrage des Kunden erfolgreich empfangen und verarbeitet wurde
- 3XX – Diese Codes informieren den Client darüber, dass eine zusätzliche Anfrage, normalerweise an einen anderen URI, gestellt werden muss, um den Vorgang erfolgreich abzuschließen
- 4XX – Clientfehler. Solche Codes können aus einer falsch verfassten Anfrage resultieren. Ein weiteres Beispiel ist der bekannte „404 Not Found“-Code, der auftreten kann, wenn ein Client eine nicht vorhandene Ressource anfordert
- 5XX – Serverfehler. Diese Codes werden an den Client zurückgegeben, wenn der Server für den Fehler des Vorgangs verantwortlich ist
GO TO FULL VERSION