Repräsentationsstaatsübertragung
Repräsentationsstaatsübertragung (SICH AUSRUHEN) ist ein Software -Architekturstil Das beschreibt eine Uniform Schnittstelle zwischen entkoppelten Komponenten in der Internet in einem Kundenserver die Architektur. Ruhe definiert vier Schnittstellenbeschränkungen:
- Identifizierung von Ressourcen
- Manipulation von Ressourcen
- Selbstdeskriptive Nachrichten und
- Hypermedia als Motor des Anwendungszustands[1]
Im Allgemeinen beschreibt es a Maschine zu Maschine Schnittstelle und insbesondere in Web Entwicklung Es ermöglicht eine Ergänzung oder einen Austausch von Serverseitiges Rendering Unterstützung der Kunden-Seiten-Renderung in Webanwendungen als Client -Servermodell bei dem die Webbrowser fungiert als Kunde.
In der gesamten Softwarebranche wurde der Rest eingesetzt und ist ein weit verbreiteter Satz von Richtlinien für die Erstellung staatenlos, zuverlässig Web -APIs. Eine Web -API, die dem gehorcht Ruhestandsbeschränkungen wird informell beschrieben als Erholsam. RESTful -Web -APIs basieren normalerweise locker auf HTTP -Methoden zugreifen Ressourcen über URL-codiert Parameter und die Verwendung von JSON oder Xml Daten übertragen.
"Webressourcen" wurden zuerst auf dem definiert Weltweites Netz als Dokumente oder Dateien, die durch ihre identifiziert wurden URLs. Heutzutage ist die Definition viel generischer und abstrakter und umfasst alles, eine Entität oder Aktion, die im Internet identifiziert, benannt, adressiert, gehandhabt oder ausgeführt werden können. In einem erholsamen Webdienst, die Anfragen an eine Ressource gestellt werden Uri eine Antwort mit a Nutzlast formatiert in Html, Xml, JSONoder ein anderes Format. Beispielsweise kann die Antwort bestätigen, dass der Ressourcenzustand geändert wurde. Die Antwort kann auch enthalten Hypertext Links zu verwandten Ressourcen. Das häufigste Protokoll für diese Anfragen und Antworten ist HTTP. Es bietet Operationen (HTTP -Methoden) wie Optionen, holen, posten, setzen, patchen und löschen.[2][3] Durch die Verwendung eines staatenlosen Protokolls und Standardbetriebs streben erholsame Systeme eine schnelle Leistung, Zuverlässigkeit und die Fähigkeit an, zu wachsen, indem Komponenten wiederverwendet werden, die nicht das System als Ganzes beeinflussen können, auch wenn es ausgeführt wird.
Das Ziel von Ruhe ist es, die Leistung, Skalierbarkeit, Einfachheit, Modifikabilität, Sichtbarkeit, Portabilität und Zuverlässigkeit zu erhöhen. Dies wird erreicht, indem sie die PREST -Prinzipien wie eine Client -Server -Architektur, Staatenlosigkeit, die Zwischenkenntnis, die Verwendung eines geschichteten Systems, die Unterstützung von Code auf Bedarf und Verwendung einer einheitlichen Schnittstelle befolgen. Diese Prinzipien müssen befolgt werden, damit das System als erholsam eingestuft wird.
Etymologie
Der Begriff Repräsentationsstaatsübertragung wurde im Jahr 2000 eingeführt und definiert von Roy Fielding in seiner Dissertation.[1][4] Der Begriff soll ein Bild davon hervorrufen, wie sich eine gut gestaltete Webanwendung verhält: Es handelt sich um ein Netzwerk von Webressourcen (eine virtuelle Zustandsmaschine) Wenn der Benutzer die Anwendung überschreitet, indem sie Links auswählt (z. B. http://www.example.com/articles/21), was dazu führt .
Geschichte

Das Web begann in den Jahren 1993 bis 1994 in den täglichen Einsatz zu Websites für den allgemeinen Gebrauch begann verfügbar zu werden.[5] Zu dieser Zeit gab es nur eine fragmentierte Beschreibung der Architektur des Webs, und es gab Druck in der Branche, sich auf einen Standard für die Webschnittstellenprotokolle zu einigen. Zum Beispiel wurden dem Kommunikationsprotokoll (HTTP) zu Unterstützung zugesetzt, um zu unterstützen Stellvertreterund es wurden weitere Erweiterungen vorgeschlagen, aber es bestand Bedarf an einer formalen Webarchitektur, um die Auswirkungen dieser Änderungen zu bewerten.[6]
Das W3c und Ietf Arbeitsgruppen Zusammen begann die Arbeit, um formelle Beschreibungen der drei Hauptstandards des Webs zu erstellen: Uri, Http, und Html. Roy Fielding war an der Schaffung dieser Standards (insbesondere HTTP 1.0 und 1.1 und URI) beteiligt, und in den nächsten sechs Jahren entwickelte er den restarchitektonischen Stil, testete seine Einschränkungen in den Protokollstandards des Web und nutzte ihn als Mittel zur Definition von Architekturverbesserungen - und um architektonische Missvereinbarungen zu identifizieren. Fielding definierte Ruhe in seiner Doktoration von 2000 "Architekturstilen und das Design von netzwerkbasierten Softwarearchitekturen" bei UC Irvine.
Um den Rest-Architekturstil zu erstellen, identifizierte Fielding die Anforderungen, die bei der Erstellung einer weltweiten netzwerkbasierten Anwendung gelten, z. Er befragte auch viele bestehende Architekturstile für netzwerkbasierte Anwendungen und identifizierte, welche Funktionen mit anderen Stilen wie Caching- und Client-Server-Funktionen geteilt werden, und solche, die einzigartig für Ruhe sind, wie z. B. das Konzept der Ressourcen. Fielding versuchte, sowohl die vorhandene Architektur der aktuellen Implementierung zu kategorisieren als auch zu ermitteln, welche Aspekte für die Verhaltens- und Leistungsanforderungen des Webs von zentraler Bedeutung sind.
Architekturstile sind von Natur aus unabhängig von einer spezifischen Implementierung, und während die Ruhe im Rahmen der Entwicklung der Webstandards erstellt wurde, befolgt die Implementierung des Web nicht jede Einschränkung im restlichen architektonischen Stil. Fehlanpassungen können aufgrund von Unwissenheit oder Aufsicht auftreten, aber die Existenz des restlichen architektonischen Stils bedeutet, dass sie identifiziert werden können, bevor sie standardisiert werden. Beispielsweise identifizierte das Felding die Einbettung von Sitzungsinformationen in URIs als Verstoß gegen die REST -Einschränkungen, die sich negativ auf gemeinsame Verbreitung und Serverskalierbarkeit auswirken können. HTTP -Kekse Auch gegen Ruhezustand verstoßen, weil sie nicht mit dem Anwendungszustand des Browsers synchronisiert werden können, was sie unzuverlässig macht. Sie enthalten auch undurchsichtige Daten, die ein Problem sein können Privatsphäre und Sicherheit.
Architekturkonzepte

Der Restarchitekturstil ist für netzwerkbasierte Anwendungen, insbesondere für Client-Server-Anwendungen, ausgelegt. Aber mehr als das ist es für die Verwendung von Internetmaßstäben ausgelegt, sodass die Kopplung zwischen den User-Agent (Kunde) und die Herkunftsserver muss as sein Leicht (locker) möglichst möglich, um die umfassende Akzeptanz zu erleichtern. Dies wird erreicht, indem eine Abstraktionsebene auf dem Server erstellt wird, indem definiert wird Ressourcen das verkapselt Entitäten (z. B. Dateien) auf dem Server und damit die zugrunde liegenden Implementierungsdetails (Dateiserver, Datenbank usw.). Die Definition ist jedoch noch allgemeiner als diese: Alle Informationen, die benannt werden können, können eine Ressource sein: ein Bild, eine Datenbankabfrage, ein zeitlicher Dienst (z. B. "Das heutige Wetter in London") oder sogar eine Sammlung anderer Ressourcen. Dieser Ansatz ermöglicht die größte Interoperabilität zwischen Kunden und Servern in einer langlebigen Umgebung im Internetmaßstab, die organisatorische Grenzen (Vertrauensgrenzen) überschreitet.
Kunden können nur mithilfe von Ressourcen zugreifen URIS. Mit anderen Worten, der Client fordert eine Ressource mit einem URI an, und der Server antwortet mit a Darstellung der Ressource. Eine Darstellung einer Ressource ist ein weiteres wichtiges Konzept in Ruhe; Um sicherzustellen, dass Antworten von der größtmöglichen Anzahl von Kunden interpretiert werden können Anwendungen Eine Darstellung der Ressource wird im Hypertextformat gesendet. Somit wird eine Ressource durch Hypertext -Darstellungen manipuliert, die in übertragen werden Mitteilungen zwischen Clients und Servern.
Die starke Entkopplung von Client und Server zusammen mit der textbasierten Informationsübertragung unter Verwendung eines einheitlichen Adressierungsprotokolls lieferte die Grundlage für die Erfüllung der Anforderungen des Web: Robustheit (anarchische Skalierbarkeit), unabhängige Bereitstellung von Komponenten, große Korndatenübertragung und Eine Barriere mit geringer Einreise für Inhaltsleser, Autoren und Entwickler in Contents gleichermaßen.
Architektonische Eigenschaften
Die Einschränkungen des restlichen architektonischen Stils wirken sich auf die folgenden architektonischen Eigenschaften aus:[1][7]
- Leistung in Komponenteninteraktionen, die der dominierende Faktor für benutzerorientierte Leistung und Netzwerk-Effizienz sein können;[8]
- Skalierbarkeit Ermöglichen der Unterstützung einer großen Anzahl von Komponenten und Wechselwirkungen zwischen Komponenten;
- Einfachheit einer einheitlichen Schnittstelle;
- Modifizierbarkeit von Komponenten, um den sich ändernden Anforderungen zu erfüllen (auch wenn die Anwendung ausgeführt wird);
- Sichtbarkeit der Kommunikation zwischen Komponenten durch Dienstagenturen;
- Portabilität von Komponenten durch Verschieben von Programmcode mit den Daten;
- Zuverlässigkeit des Widerstands gegen Fehler auf Systemebene bei Vorhandensein von Ausfällen in Komponenten, Anschlüssen oder Daten.[8]
Architektonische Einschränkungen
Der restliche architektonische Stil definiert sechs Leitbeschränkungen.[7][9] Wenn diese Einschränkungen auf die Systemarchitektur angewendet werden, gewinnt sie wünschenswert nicht funktionierende Eigenschaften, wie Leistung, Skalierbarkeit, Einfachheit, Modifizierbarkeit, Sichtbarkeit, Portabilität und Zuverlässigkeit.[1] Ein System, das einigen oder all diesen Einschränkungen entspricht, wird lose als erholsam bezeichnet.
Die formalen Ruhegrenzen sind wie folgt:
Kunden -Server -Architektur
Das Designmuster des Kunden-Servers erzwingt das Prinzip von Trennung von Bedenken: Trennung der Bedenken hinsichtlich der Benutzeroberfläche von den Datenspeicherproblemen. Die Portabilität der Benutzeroberfläche wird somit verbessert. Im Falle des Webs a Fülle von Webbrowsern wurden für die meisten Plattformen entwickelt, ohne dass Kenntnisse über Server -Implementierungen erforderlich sind. Die Trennung vereinfacht auch die Serverkomponenten und verbessert die Skalierbarkeit, aber was noch wichtiger ist, ermöglicht es Komponenten, sich unabhängig voneinander zu entwickeln (anarchische Skalierbarkeit), was in einer Umgebung im Internetmaßstab erforderlich ist, in der mehrere organisatorische Domänen beteiligt sind.
Staatenlosigkeit
Beim Berechnen ist ein staatenloser Protokoll a Kommunikationsprotokoll in denen keine Sitzungsinformationen vom Empfänger, normalerweise ein Server, beibehalten werden. Relevante Sitzungsdaten werden vom Client so an den Empfänger gesendet, dass jedes übertragene Informationspaket isoliert verstanden werden kann, ohne Kontextinformationen aus früheren Paketen in der Sitzung. Diese Eigenschaft von staatenlosen Protokollen macht sie ideal in Anwendungen mit hohem Volumen und erhöht die Leistung, indem sie die durch Aufbewahrung von Sitzungsinformationen verursachte Serverlast entfernen.
Cacheabilität
Wie im World Wide Web können Kunden und Vermittler Antworten zwischenspeichern. Die Antworten müssen sich implizit oder explizit als zwischengespeicherbar oder nicht zugeschnitten definieren, um die Kunden daran zu hindern, veraltete oder unangemessene Daten als Antwort auf weitere Anforderungen zu liefern. Gut verwaltetes Zwischenspeichern teilweise oder vollständig beseitigt einige Kunden-Server-Interaktionen, wodurch die Skalierbarkeit und Leistung weiter verbessert wird. Der Cache kann im Client -Computer im Speicher- oder Browser -Cache -Speicher ausgeführt werden. Zusätzlich kann Cache in einem Content Delivery Network (CDN) gespeichert werden.
Layered System
Ein Client kann normalerweise nicht feststellen, ob er direkt mit dem Endserver oder mit einem Vermittler auf dem Weg verbunden ist. Wenn ein Proxy oder Lastenausgleicher wird zwischen Client und Server platziert, es hat keine Auswirkungen auf die Kommunikation und es muss nicht den Client- oder Servercode aktualisiert werden. Zwischenserver können das System verbessern Skalierbarkeit Durch Aktivieren des Lastausgleichs und durch Bereitstellung gemeinsamer Caches. Außerdem kann Sicherheit als Ebene über die Webdienste hinzugefügt werden, wodurch die Geschäftslogik von der Sicherheitslogik getrennt wird.[10] Hinzufügen von Sicherheit als separate Ebene durchsetzt Sicherheitsrichtlinien. Schließlich können Intermediary -Server mehrere andere Server aufrufen, um eine Antwort auf den Client zu generieren.
Code on Demand (optional)
Server können die Funktionalität eines Clients vorübergehend erweitern oder anpassen, indem sie ausführbaren Code übertragen: zusammengestellte Komponenten wie z. Java -Applets, oder clientseitige Skripte wie z. JavaScript.
Einheitliche Schnittstelle
Die einheitliche Schnittstellenbeschränkung ist grundlegend für das Design eines erholsamen Systems.[1] Es vereinfacht und entkoppelt die Architektur, die es jedem Teil ermöglicht, sich unabhängig voneinander zu entwickeln. Die vier Einschränkungen für diese einheitliche Schnittstelle sind:
- Ressourcenidentifikation in Anfragen - einzelne Ressourcen werden in Anfragen identifiziert, beispielsweise in der Verwendung URIS In erholsamen Webdiensten. Die Ressourcen selbst sind konzeptionell von den Darstellungen getrennt, die an den Kunden zurückgegeben werden. Zum Beispiel könnte der Server Daten aus seiner Datenbank als Senden Html, Xml oder wie JSON- Nicht, von denen die interne Darstellung des Servers ist.
- Ressourcenmanipulation durch Darstellungen - wenn ein Kunde eine Darstellung einer Ressource hat, einschließlich aller Metadaten Angehängt sind genügend Informationen, um den Status der Ressource zu ändern oder zu löschen.
- Selbstdeskriptive Nachrichten - Jede Nachricht enthält genügend Informationen, um zu beschreiben, wie die Nachricht verarbeitet wird. Beispielsweise kann der Parser aufgerufen werden durch a Medientyp.[1]
- Hypermedia als Motor des Anwendungszustands (Hassoas) - Nachdem Sie auf einen anfänglichen URI für die Restanwendung zugegriffen haben - analood für einen menschlichen Webbenutzer, der auf die zugreift Startseite einer Website-ein REST-Client sollte dann in der Lage sein, serverbereitete Links dynamisch zu verwenden, um alle verfügbaren Ressourcen zu ermitteln, die er benötigt. Wenn der Zugriff fortschreitet, antwortet der Server mit Text, der enthält Hyperlinks auf andere Ressourcen, die derzeit verfügbar sind. Es ist nicht erforderlich, dass der Client mit Informationen über die Struktur oder Dynamik der Anwendung fest codiert wird.[11]
Klassifizierungsmodelle
Es wurden mehrere Modelle entwickelt, um REST -APIs gemäß ihrer Einhaltung verschiedener Prinzipien des REST -Designs zu klassifizieren, wie z. Richardson -Reifegradmodell.[12]
Auf Webdienste angewendet
Internetservice Apis das hält sich an die Rest architektonische Einschränkungen werden erholsame APIs genannt.[13] HTTP-basierte erholsame APIs werden mit den folgenden Aspekten definiert:[14]
- eine Basis Uri, wie zum Beispiel
http://api.example.com/
; - Standard HTTP -Methoden (z. B. Get, Post, Put und Löschen);
- a Medientyp Dadurch definieren Datenelemente für Zustandsübergangsdaten (z. B. Atom, Mikroformaten, Anwendung/VND.Collection+JSON,[14]: 91–99 etc.). Die aktuelle Darstellung teilt dem Client mit, wie er Anfragen für Übergänge zu allen nächsten verfügbaren Anwendungszuständen verfasst. Dies kann so einfach wie ein URI oder so komplex sein wie ein Java -Applet.[15]
Semantik von HTTP -Methoden
Die folgende Tabelle zeigt, wie HTTP -Methoden in HTTP -APIs verwendet werden sollen, einschließlich erholsamer.
HTTP -Methode | Beschreibung |
---|---|
ERHALTEN[2]: §4.3.1 | Holen Sie sich eine Darstellung des Status der Zielressource. |
POST[2]: §4.3.3 | Lassen Sie den Zielressourcenverfahren die in der Anfrage eingeschlossene Darstellung verarbeiten. |
STELLEN[2]: §4.3.4 | Erstellen oder ersetzen Sie den Status der Zielressource durch den Status, den in der Anforderung beigefügt wurde. |
Patch[3] | Aktualisieren Sie teilweise den Status der Ressourcen. |
LÖSCHEN[2]: §4.3.5 | Löschen Sie den Status der Zielressource. |
OPTIONEN[2]: §4.3.7 | Werbung für die verfügbaren Methoden. |
Die GET -Methode ist sicherDies bedeutet, dass die Anwendung auf eine Ressource nicht zu einer staatlichen Änderung der Ressource (schreibgeschützte Semantik) führt.[2]: §4.2.1 Die Methoden Get, Put und Löschen sind idempotentDas, was bedeutet, dass sie mehrmals auf eine Ressource angewendet werden, führt zu derselben Statusänderung der Ressource wie einmal angewendet, obwohl sich die Antwort unterscheiden kann.[2]: §4.2.2 Die Get and Post -Methoden sind zwischengespeichert, was bedeutet, dass Antworten auf sie für die zukünftige Wiederverwendung gespeichert werden dürfen.[2]: §4.2.3
Diskussion
nicht wie SEIFE-Basierend auf Webdiensten gibt es keinen "offiziellen" Standard für erholsame Web -APIs. Dies liegt daran, dass Ruhe ein architektonischer Stil ist, während Seife ein Protokoll ist. Ruhe ist kein Standard für sich, aber erholsame Implementierungen nutzen Standards, wie z. Http, Uri, JSON, und Xml. Viele Entwickler beschreiben ihre APIs als erholsam, obwohl diese APIs nicht alle oben beschriebenen architektonischen Einschränkungen (insbesondere die Einschränkung der einheitlichen Schnittstelle) erfüllen.[15]
Siehe auch
- Saubere URL- URL, die die Verwendbarkeit einer Website verbessern soll
- Inhaltsdelieferetzwerk- Ebene im Internet -Ökosystem, die Engpässe adressieren
- Domänenanwendungsprotokoll (DAP)
- Liste der URI -Programme- Namespace -Kennung von Iana zugewiesen
- Microservices- Sammlung lose gekoppelter Dienste, die zum Erstellen von Computeranwendungen verwendet werden
- Überblick über die RESTful -API -Beschreibung Sprachen
- OpenAPI -Spezifikation-Eine Spezifikation für maschinenlesbare Schnittstellendateien
- Öffnen Sie das Datenprotokoll- Ein offenes Protokoll zum Erstellen interoperabler REST -APIs
- Raml
- RESTFOFFUR -DIENSTLEISUNG (RSDL)
- Ressourcenorientierte Architektur (ROA)
- Ressourcenorientiertes Computer (ROC)
- Serviceorientierte Architektur (SOA)
- Web-orientierte Architektur (WOA)
Verweise
- ^ a b c d e f Fielding, Roy Thomas (2000). "Kapitel 5: Repräsentationsstatusübertragung (Rest)". Architekturstile und das Design von netzwerkbasierten Softwarearchitekturen (Ph.D.). Universität von Kalifornien, Irvine.
- ^ a b c d e f g h i Fielding, Roy (Juni 2014). "Hypertext -Transferprotokoll (HTTP/1.1): Semantik und Inhalt, Abschnitt 4". Ietf. Internet Engineering Task Force (IETF). RFC 7231. Abgerufen 2018-02-14.
- ^ a b Dusseault, Lisa (März 2010). "Patch -Methode für HTTP". Ietf. Internet Engineering Task Force (IETF). RFC 5789. Abgerufen 2022-06-25.
- ^ "Fielding über die Definition des Restbegriffs diskutiert". Groups.yahoo.com. Archiviert von das Original am 5. November 2015. Abgerufen 2017-08-08.
- ^ Suppry, Nick (2012). Medien, Gesellschaft, Welt: Sozialtheorie und digitale Medienpraxis. London: Polity Press. p. 2. ISBN 9780745639208.
- ^ Fielding, Roy Thomas (2000). "Kapitel 6: Erfahrung und Bewertung". Architekturstile und das Design von netzwerkbasierten Softwarearchitekturen (Ph.D.). Universität von Kalifornien, Irvine.
- ^ a b Erl, Thomas; Carlyle, Benjamin; Pautasso, Cesare; Balasubramanian, Raj (2012). "5.1". SOA mit Ruhe: Prinzipien, Muster und Einschränkungen für den Aufbau von Unternehmenslösungen mit Ruhe. Upper Saddle River, New Jersey: Prentice Hall. ISBN 978-0-13-701251-0.
- ^ a b Fielding, Roy Thomas (2000). "Kapitel 2: netzwerkbasierte Anwendungsarchitekturen". Architekturstile und das Design von netzwerkbasierten Softwarearchitekturen (Ph.D.). Universität von Kalifornien, Irvine.
- ^ Richardson, Leonard; Ruby, Sam (2007). Erholte Webdienste. Sebastopol, Kalifornien: O'Reilly Media. ISBN 978-0-596-52926-0.
- ^ Lange, Kenneth (2016). Das kleine Buch über REST -Dienste. Kopenhagen. p. 19. Abgerufen 18. August 2019.
- ^ "Rest Hassoas". Restfulapi.net. 2. Juni 2018.
- ^ Ivan Salvadori, Frank Siqueira (Juni 2015). "Ein Reifegradmodell für semantische, erholsame Web -APIs". Konferenz: Web Services (ICWS), 2015 IEEE International Conference Onat: New York - USA - über ResearchGate.
- ^ "Was ist REST -API". RESTFOR API -Tutorial. Abgerufen 29. September 2016.
- ^ a b Richardson, Leonard; Amundsen, Mike (2013), RESTful Web APIs, O'Reilly Media, ISBN 978-1-449-35806-8
- ^ a b Roy T. Fielding (2008-10-20). "REST -APIs müssen hypertextgetrieben werden". Roy.gbiv.com. Abgerufen 2016-07-06.
Weitere Lektüre
- Pautasso, Cesare; Wilde, Erik; Alarcon, Rosa (2014), Ruhe: Fortgeschrittene Forschungsthemen und praktische Anwendungen, Springer, ISBN 9781461492986
- Pautasso, Cesare; Zimmermann, Olaf; Leymann, Frank (April 2008), "Erholte Webdienste gegen große Webdienste: Die richtige architektonische Entscheidung treffen", 17. International World Wide Web Conference (www2008)
- Ferreira, Otavio (November 2009), Semantische Webdienste: Ein erholter Ansatz, Iadis, ISBN 978-972-8924-93-5
- Fowler, Martin (2010-03-18). "Richardson -Reifegradmodell: Schritte in Richtung Ruhm der Ruhe". Martinfowler.com. Abgerufen 2017-06-26.