Was genau ist RESTful-Programmierung?
Antworten
Zu viele Anzeigen?Was ist REST?
REST steht für Representational State Transfer. (Manchmal wird es auch buchstabiert "ReST".) Es stützt sich auf eine zustandslose, Client-Server, cachefähige Kommunikationsprotokoll - und in praktisch allen Fällen wird das HTTP Protokoll verwendet.
REST ist ein Architekturstil für die Entwicklung vernetzter Anwendungen. Die Idee ist, dass anstelle von komplexen Mechanismen wie CORBA, RPC oder SOAP zu verwenden, um eine Verbindung zwischen Maschinen herzustellen, wird einfaches HTTP verwendet, um zwischen den Rechnern.
In vielerlei Hinsicht kann das World Wide Web selbst, das auf HTTP basiert, als als eine REST-basierte Architektur angesehen werden. RESTful-Anwendungen verwenden HTTP-Anfragen um Daten zu posten (erstellen und/oder aktualisieren), Daten zu lesen (z.B. Abfragen), und Daten zu löschen. REST verwendet also HTTP für alle vier CRUD (Erstellen/Lesen/Aktualisieren/Löschen) Operationen.
REST ist eine leichtgewichtige Alternative zu Mechanismen wie RPC (Remote Procedure Calls) und Webdiensten (SOAP, WSDL, etc.). Später werden wir sehen, wie viel einfacher REST ist.
Trotz seiner Einfachheit ist REST voll funktionsfähig; es gibt im Grunde Es gibt im Grunde nichts, was Sie in Webdiensten tun können, was nicht auch mit einer RESTful Architektur möglich ist. REST ist kein "Standard". Es wird nie eine W3C Empfehlung für REST geben, zum Beispiel. Und obwohl es REST Programmier-Frameworks gibt, ist die Arbeit mit REST so einfach, dass man mit Standardbibliotheksfunktionen in Sprachen wie Perl, Java oder Perl, Java oder C#.
Eine der besten Referenzen, die ich gefunden habe, als ich versuchte, die einfache wahre Bedeutung von Ruhe zu finden.
REST verwendet die verschiedenen HTTP-Methoden (hauptsächlich GET/PUT/DELETE), um Daten zu manipulieren.
Anstatt eine bestimmte URL zu verwenden, um eine Methode zu löschen (z.B., /user/123/delete
), würden Sie eine DELETE-Anfrage an die /user/[id]
URL, um einen Benutzer zu bearbeiten, um Informationen über einen Benutzer abzurufen, senden Sie eine GET-Anfrage an /user/[id]
Stattdessen könnte zum Beispiel eine Reihe von URLs wie die folgenden aussehen.
GET /delete_user.x?id=123
GET /user/delete
GET /new_user.x
GET /user/new
GET /user?id=1
GET /user/id/1
Sie verwenden die HTTP-"Verben" und haben
GET /user/2
DELETE /user/2
PUT /user
Es geht um die Programmierung, bei der die Architektur Ihres Systems in die REST-Stil dargelegt von Roy Fielding in seine Dissertation . Da dies der architektonische Stil ist, der das Web (mehr oder weniger) beschreibt, sind viele Menschen daran interessiert.
Bonus-Antwort: Nein. Wenn Sie nicht gerade Software-Architektur als Akademiker studieren oder Webdienste entwerfen, gibt es eigentlich keinen Grund, diesen Begriff zu kennen.
Ich würde sagen, bei der RESTful-Programmierung geht es um die Erstellung von Systemen (API), die dem REST-Architekturstil folgen.
Ich habe dieses fantastische, kurze und leicht verständliche Tutorial über REST von Dr. M. Elkstein gefunden und zitiere den wesentlichen Teil, der Ihre Frage zum größten Teil beantworten würde:
REST ist eine Architekturstil für die Entwicklung vernetzter Anwendungen. Die Idee ist, dass anstelle von komplexen Mechanismen wie CORBA, RPC oder SOAP zu verwenden, um eine Verbindung zwischen Maschinen herzustellen, wird einfaches HTTP verwendet, um Anrufe zwischen Rechnern.
- In vielerlei Hinsicht kann das World Wide Web selbst, das auf HTTP basiert, als eine REST-basierte Architektur betrachtet werden.
RESTful-Anwendungen verwenden HTTP-Anfragen zum Einstellen von Daten (Erstellen und/oder aktualisieren), Daten zu lesen (z. B. Abfragen) und Daten zu löschen. Somit verwendet REST HTTP für alle vier CRUD-Vorgänge (Create/Read/Update/Delete).
Ich denke nicht, dass Sie sich dumm fühlen sollten, weil Sie außerhalb von Stack Overflow nichts über REST gehört haben..., ich wäre in der gleichen Situation!; Antworten auf diese andere SO-Frage auf Warum wird REST jetzt so wichtig? könnte einige Gefühle lindern.
Ich entschuldige mich, wenn ich die Frage nicht direkt beantworte, aber es ist einfacher, all dies mit detaillierten Beispielen zu verstehen. Fielding ist aufgrund der vielen Abstraktionen und der Terminologie nicht leicht zu verstehen.
Hier gibt es ein recht gutes Beispiel:
Erklärungen zu REST und Hypertext: Spam-E der Spam-Reinigungsroboter
Und noch besser ist, dass es hier eine saubere Erklärung mit einfachen Beispielen gibt (die Powerpoint ist umfassender, aber das meiste ist auch in der HTML-Version zu finden):
http://www.xfront.com/REST.ppt o http://www.xfront.com/REST.html
Nachdem ich die Beispiele gelesen hatte, konnte ich verstehen, warum Ken sagt, dass REST hypertextgesteuert ist. Ich bin mir allerdings nicht sicher, ob er Recht hat, denn /user/123 ist ein URI, der auf eine Ressource verweist, und es ist mir nicht klar, dass es nicht REST-gerecht ist, nur weil der Client "out-of-band" davon weiß.
Das xfront-Dokument erklärt den Unterschied zwischen REST und SOAP, und auch das ist sehr hilfreich. Wenn Fielding sagt: " Das ist RPC. Es schreit nach RPC. "Es ist klar, dass RPC nicht RESTful ist, daher ist es nützlich, die genauen Gründe dafür zu kennen. (SOAP ist eine Art von RPC.)
3 Stimmen
Siehe auch die Antwort unter dem folgenden Link stackoverflow.com/a/37683965/3762855
4 Stimmen
REST ist vielleicht ein bisschen alt geworden ;) youtu.be/WQLzZf34FJ8
1 Stimmen
Weitere Informationen finden Sie unter folgendem Link news.ycombinator.com/item?id=3538585
0 Stimmen
Berichtigungen der akzeptierten Antwort hier. stackoverflow.com/questions/19843480/ Oder hier roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven Oder hier web.archive.org/web/20130116005443/http://tomayko.com/writings/
0 Stimmen
Ich möchte nur einen Satz hinzufügen, von dem ich wirklich glaube, dass er viel Bedeutung hat: "Bei REST geht es darum, die Art und Weise, wie das menschliche Web funktioniert, auf das programmatische WEB anzuwenden."
0 Stimmen
RESTful Programmierung (rpc Rahmen) ist eine beliebte, aber nicht beste rpc Rahmen. Http POST und json rpc framework ist besser als REST rpc framework. Welche Methode sollte ich verwenden, wenn ich eine Login-Api hinzufügen möchte? GET?POST? Sollte ich json im POST-Body verwenden oder sollte ich http-Abfrage im POST-Body verwenden? Wie parse ich einen REST-Antwortkörper? Wird der Server json verwenden? Verwendet der Server eine http-Abfrage? REST macht die Dinge nur komplex und nicht konsistent. Ich kann nur POST und json verwenden, um zu tun, was ich will. Ich möchte nicht über GET/POST/DELETE Zeug kümmern.
0 Stimmen
Mark Knol, die Verwendung von Humor oder anderen menschlichen Verhaltensweisen (wie z.B. "Danke" sagen) ist von den Moderatoren, die einen Demutseinlauf erlebt haben, strengstens untersagt.
0 Stimmen
Diese Frage entspricht nicht den Richtlinien von StackOverflow. Sie kann mit einer einfachen Suche beantwortet werden: de.wikipedia.org/wiki/Repräsentative_Zustandsübertragung
9 Stimmen
@OLIVER.KOO Gute Beobachtung. Es ist nur so, dass ich die Frage zu einer Zeit gestellt habe, als das Thema noch recht neu war. Es wurde viel darüber geredet, aber nicht viele Leute wussten, worum es ging. Zumindest wusste ich es nicht, und es scheint, dass meine Frage ihnen geholfen hat, weil sie es auch wissen wollten.