Was genau ist RESTful-Programmierung?
Antworten
Zu viele Anzeigen?Ich würde sagen, dass ein wichtiger Baustein zum Verständnis von REST in den Endpunkten oder Mappings liegt, wie z. B. /customers/{id}/balance
.
Sie können sich einen solchen Endpunkt als die Verbindungspipeline von der Website (Front-End) zu Ihrer Datenbank/Ihrem Server (Back-End) vorstellen. Über sie kann das Frontend Backend-Operationen durchführen, die in den entsprechenden Methoden eines REST-Mappings in Ihrer Anwendung definiert sind.
Eine REST-API ist eine API-Implementierung, die sich an die architektonischen Vorgaben von REST hält. Sie fungiert als eine Schnittstelle. Die Kommunikation zwischen dem Client und dem Server erfolgt über HTTP. Eine REST-API nutzt die Vorteile der HTTP-Methoden, um die Kommunikation zwischen dem Client und dem Server herzustellen. REST ermöglicht es Servern auch, die Antworten zwischenzuspeichern, was die Leistung der Anwendung verbessert. Die Kommunikation zwischen dem Client und dem Server ist ein zustandsloser Prozess. Das bedeutet, dass jede Kommunikation zwischen dem Client und dem Server eine neue ist.
Es werden keine Informationen oder Speicher aus den vorherigen Kommunikationen übernommen. Jedes Mal, wenn ein Client mit dem Backend interagiert, muss er also auch die Authentifizierungsinformationen an das Backend senden. Dadurch kann das Backend herausfinden, ob der Client zum Zugriff auf die Daten berechtigt ist oder nicht.
Bei der Implementierung einer REST-API erhält der Client die Backend-Endpunkte, mit denen er kommunizieren kann. Dadurch werden das Backend und der Client-Code vollständig entkoppelt.
Um hier etwas Neues beizutragen, möchte ich den Link zu meinem Artikel teilen, der REST durch einen praktischen und objektiven Ansatz konzeptualisiert.
Ich gehe auf die wichtigsten Konzepte ein, wie zum Beispiel:
- HATEOAS - Hypermedia As The Engine Of Application State,
- Ressourcen und Darstellungen,
- Adressierbarkeit,
- Idempotenz in REST,
- Richardson's REST Reifegradmodell.
- Medienarten
- API-Versionierung
Ich habe auch ein GitHub-Projekt erstellt, das Sie einfach mit Docker ausführen können und das den in diesem Artikel vorgestellten Inhalt abdeckt.
https://itnext.io/how-to-build-a-restful-api-a-deep-dive-into-rest-apis-215188f80854
Bearbeiten
Lesen Sie die README hier und ich hoffe, Sie werden REST wirklich verstehen.
https://github.com/lukepuplett/surfdude-csharp/blob/master/README.md
--
Diese Antworten mit Beispielen für verknüpfte Ressourcen sind großartig, aber nur die Hälfte des Bildes.
Stellen Sie sich also vor, Sie entwerfen eine Website. Sie schreiben eine Geschichte,
Ich möchte eine Adresse nach Postleitzahl suchen können, damit ich eine Lieferadresse auswählen kann.
Dann bauen Sie die Website so auf, dass sie den Benutzer auf diese Reise mitnimmt, und versuchen, die Seiten in einem Workflow miteinander zu verknüpfen.
Eine Website, die zwar zu einer Adressensuche führt, die Besucher aber erst die Adresse in die Zwischenablage kopieren und dann zum Formular für die Lieferadresse zurückkehren lässt, wäre nicht sehr benutzerfreundlich.
Eine REST-API verwendet Muster, die wir im Web für eine Maschine-Maschine-Interaktion für selbstverständlich halten.
Die Suche nach einer Postleitzahl sollte nicht base/addresses/{postcode}
und es kommt eine Sammlung zurück, auch wenn jede Adresse auf eine vollständige Adresse und einige Bearbeitungslinks verweist, denn das ist eine Sackgasse; der API-Kunde müsste erraten, wie die Adresse zu verwenden ist.
Stattdessen sollte das Motiv für das Feature in den Fluss eingebaut werden, in dem es verwendet wird, so dass die Reise wieder am Anfang endet:
1 GET /orders/123/shipping
200 OK { Current shipping details + link to parent + link to address picker }
2 -> GET /orders/123/shipping/addresspicker
200 OK { Link and form for searching for a postcode }
3 -> GET /orders/123/shipping/addresspicker?postcode=tn11tl
200 OK { List of addresses each with link to pick it }
4 -> POST /orders/123/shipping/addresspicker?postcode=tn11tl&pickNo=3
200 OK { Current shipping details + link to parent + link to address picker }
Es handelt sich um eine Benutzerreise, und am Ende kann man die Auswirkungen des Flusses auf die Bestellung sehen.
Die HTTP-Anfrage/Antwort ist nicht unbedingt Teil von REST, aber ich glaube nicht, dass jemand jemals eine REST-Anwendung ohne HTTP gesehen hat.
Diese URLs können aus beliebigen Zeichen bestehen, sie sind nur Bezeichner, ich habe sie hübsch gemacht, weil sie für Menschen sinnvoll sind. Eine Maschine würde die rel
um herauszufinden, was sie tun, und nicht von einer lesbaren href
.
REST ist ein verteiltes System (wie WWW) Software-Architektur-Stil, können Sie sich vorstellen, dass es eine gut gestaltete Web-Anwendung Regeln: eine Gruppe von Internet-Webseiten (eine virtuelle Zustandsmaschine), in denen Hyperlink durch Anklicken Link (Zustandsübergang), das Ergebnis ist die nächste Web-Seite (was bedeutet, den nächsten Zustand der Anwendung).
REST beschreibt das Netzsystem, das aus drei Teilen besteht:
- Datenelemente (Ressource, Ressourcenkennung, Darstellung)
- Anschlüsse (Client, Server, Cache, Resolver, Tunnel)
- Komponenten (Ursprungsserver, Gateway, Proxy, Benutzeragent)
REST muss die folgenden Bedingungen erfüllen:
- Der Status der Anwendungsfunktionalität wird in Ressourcen aufgeteilt
- Jede Ressource, die als Hyperlink verwendet wird, hat eine Positionierungssyntax (d.h. im WWW URI)
- Alle Ressourcen haben eine einheitliche Schnittstelle zwischen dem Client und dem Übergangszustand der Ressource, einschließlich:
- Eine begrenzte Anzahl genau definierter Operationen (z.B. in HTTP GET / POST / PUT / DELETE)
- Eine begrenzte Anzahl von Inhaltsformaten, die ausführbaren Code enthalten können (z. B. im WWW Javascript)
- See previous answers
- Weitere Antworten anzeigen
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.