<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>HATEOAS Archive - CEOsBay</title>
	<atom:link href="https://ceosbay.com/tag/hateoas/feed/" rel="self" type="application/rss+xml" />
	<link>https://ceosbay.com/tag/hateoas/</link>
	<description>It&#039;s all about Tech</description>
	<lastBuildDate>Sun, 16 Apr 2023 08:01:32 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://i0.wp.com/ceosbay.com/wp-content/uploads/2022/11/image.jpg?fit=32%2C32&#038;ssl=1</url>
	<title>HATEOAS Archive - CEOsBay</title>
	<link>https://ceosbay.com/tag/hateoas/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">211828771</site>	<item>
		<title>HAL-Standard &#8211; Effiziente Hypermedia-APIs für nahtlose Web-Service-Interaktionen und erweiterbare Systeme</title>
		<link>https://ceosbay.com/2023/03/30/erklaerung-hal-standard/</link>
					<comments>https://ceosbay.com/2023/03/30/erklaerung-hal-standard/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Thu, 30 Mar 2023 15:44:44 +0000</pubDate>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[9000]]></category>
		<category><![CDATA[APIS]]></category>
		<category><![CDATA[Application]]></category>
		<category><![CDATA[Beziehungen]]></category>
		<category><![CDATA[Dokuemnt]]></category>
		<category><![CDATA[Dokument]]></category>
		<category><![CDATA[Entity]]></category>
		<category><![CDATA[Fiction]]></category>
		<category><![CDATA[HAL]]></category>
		<category><![CDATA[HATEOAS]]></category>
		<category><![CDATA[href]]></category>
		<category><![CDATA[Hypermedia]]></category>
		<category><![CDATA[Identifier]]></category>
		<category><![CDATA[Interface]]></category>
		<category><![CDATA[Interfaces]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[JSON [RFC7159]]]></category>
		<category><![CDATA[Link]]></category>
		<category><![CDATA[Ops]]></category>
		<category><![CDATA[Resource]]></category>
		<category><![CDATA[Ressourcen]]></category>
		<category><![CDATA[RFC]]></category>
		<category><![CDATA[Son]]></category>
		<category><![CDATA[Stanley]]></category>
		<category><![CDATA[Uniform]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1054</guid>

					<description><![CDATA[<p>Der HAL-Standard ist ein Hypermedia-Format, das verwendet wird, um APIs (Application Programming Interfaces) zu beschreiben. Es handelt sich dabei also nicht um den fast gleichnamigen fiktiven Supercomputer HAL 9000. Den man aus dem Science-Fiction-Roman &#8222;2001: &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/30/erklaerung-hal-standard/">HAL-Standard &#8211; Effiziente Hypermedia-APIs für nahtlose Web-Service-Interaktionen und erweiterbare Systeme</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Der HAL-Standard ist ein Hypermedia-Format, das verwendet wird, um APIs (Application Programming Interfaces) zu beschreiben. </p>



<p>Es handelt sich dabei also nicht um den fast gleichnamigen fiktiven Supercomputer HAL 9000. Den man aus dem Science-Fiction-Roman &#8222;2001: Odyssee im Weltraum&#8220; von Arthur C. Clarke oder dem gleichnamigen Film von Stanley Kubrick aus dem Jahr 1968 kennt ;).</p>



<p>Es steht für &#8222;Hypertext Application Language&#8220; und basiert auf dem <a href="https://ceosbay.com/2023/03/29/erklaerung-hateoas/" target="_blank" rel="noreferrer noopener">HATEOAS</a> (Hypermedia as the Engine of Application State)-Konzept. Das Ziel von HAL ist es, eine einheitliche Methode zum Beschreiben von APIs bereitzustellen. Gleichzeitig soll sie die Interoperabilität zwischen verschiedenen Systemen und Plattformen verbessern.</p>



<p>Im Wesentlichen besteht ein HAL-Dokument aus zwei Teilen: Ressourcen und Links. Eine Ressource ist eine Datenstruktur, die Informationen über eine bestimmte Entität enthält. Links sind Beziehungen zwischen Ressourcen, die es einem Client ermöglichen, auf eine andere Ressource zuzugreifen. Ein Link enthält normalerweise einen URI (Uniform Resource Identifier). Dieser hat eine eindeutige Adresse für eine Ressource, die sie bereitstellt und einen Relationstyp. Dieser beschreibt, welche Beziehung die verknüpfte Ressource zur aktuellen Ressource hat.</p>



<p>Ein typisches HAL-Dokument ist ein simples <a href="https://ceosbay.com/2023/03/14/erklaerung-json/" target="_blank" rel="noreferrer noopener">JSON</a> [RFC7159] und kann folgendermaßen aussehen:</p>



<pre class="wp-block-code"><code>{
  "_links": {
    "self": { "href": "/api/book/123" },
    "author": { "href": "/api/author/456" }
  },
  "title": "2001: Odyssee im Weltraum",
  "authorName": "Arthur C. Clarke",
  "publishedDate": "1968"
}</code></pre>



<p>In diesem Beispiel enthält das HAL-Dokument eine Ressource, die Informationen über ein Buch enthält, sowie Links zu anderen Ressourcen. Beispielsweise dem Autor des Buches. Der Link mit dem Relationstyp &#8222;self&#8220; gibt an, dass der Link auf die aktuelle Ressource verweist. Während der Link mit dem Relationstyp &#8222;author&#8220; angibt, dass der Link auf den Autor des Buches verweist.</p>



<p>Ein wichtiger Aspekt des HAL-Formats ist, dass es <a href="https://ceosbay.com/2023/03/29/erklaerung-hateoas/" target="_blank" rel="noreferrer noopener">HATEOAS</a> unterstützt. Dies bedeutet, dass alle Ressourcen in einer API durch Links miteinander verbunden sind. Dadurch kann ein Client einer API eine Ressource abrufen und im Anschluss die verfügbaren Links verwenden, um weitere Aktionen auszuführen. Beispielsweise das Abrufen von verwandten Ressourcen oder das Ausführen von Aktionen auf einer Ressource. Dadurch kann man die Flexibilität und Erweiterbarkeit einer API verbessern. Weil man eben neue Ressourcen und Aktionen hinzufügen kann, ohne dass Änderungen am Client-Code erforderlich sind.</p>



<h3 class="wp-block-heading">Fazit</h3>



<p>Insgesamt ist der HAL-Standard eine nützliche Methode zur Beschreibung von APIs. Es gewährleistet eine gute Interoperabilität zwischen verschiedenen Systemen, steigert die Flexibilität und Erweiterbarkeit einer API.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/30/erklaerung-hal-standard/">HAL-Standard &#8211; Effiziente Hypermedia-APIs für nahtlose Web-Service-Interaktionen und erweiterbare Systeme</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/30/erklaerung-hal-standard/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1054</post-id>	</item>
		<item>
		<title>HATEOAS &#8211; Evolution von REST für selbsterklärende APIs und zukunftssichere Web-Anwendungen</title>
		<link>https://ceosbay.com/2023/03/29/erklaerung-hateoas/</link>
					<comments>https://ceosbay.com/2023/03/29/erklaerung-hateoas/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Wed, 29 Mar 2023 20:49:20 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[APIS]]></category>
		<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Client]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[HATEOAS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Hypertext]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Online]]></category>
		<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[Rest]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[src]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[xml]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1055</guid>

					<description><![CDATA[<p>HATEOAS, kurz für &#8222;Hypertext As The Engine Of Application State&#8220;, ist ein Konzept der REST-Architektur, dass die Interaktion zwischen Client und Server durch die Verwendung von Hypertext steuert. Es ist ein Begriff, den Roy Fielding &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/29/erklaerung-hateoas/">HATEOAS &#8211; Evolution von REST für selbsterklärende APIs und zukunftssichere Web-Anwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>HATEOAS, kurz für &#8222;Hypertext As The Engine Of Application State&#8220;, ist ein Konzept der <a href="https://ceosbay.com/2023/03/14/erklaerung-json/" target="_blank" rel="noreferrer noopener">REST</a>-Architektur, dass die Interaktion zwischen Client und Server durch die Verwendung von Hypertext steuert. Es ist ein Begriff, den Roy Fielding im Rahmen seiner Dissertation bzw. bei der Definition von <a href="https://ceosbay.com/2023/03/14/erklaerung-json/" target="_blank" rel="noreferrer noopener">REST</a> eingeführt hat. Im Wesentlichen bedeutet dies, dass ein Client in der Lage ist, den Zustand der Anwendung zu verändern und den Server zu navigieren, indem er Hypertext-Links folgt, anstatt explizit URLs anzugeben.</p>



<p>Es beschreibt unter anderem eines der wichtigsten <a href="https://ceosbay.com/2023/03/14/erklaerung-json/" target="_blank" rel="noreferrer noopener">REST</a>-Eigenschaften. Da der Architekturstil eine universelle Schnittstelle bieten soll, fordert HATEOAS, dass der <a href="https://ceosbay.com/2023/03/14/erklaerung-json/" target="_blank" rel="noreferrer noopener">REST</a>-Client sich ausschließlich durch das Folgen von URIs (Uniform Resource Identifier) im Hypermedia-Format durch die Webanwendung bewegen kann. Wird dieses Prinzip umgesetzt, benötigt der Client abgesehen von einem grundsätzlichen Verständnis von Hypermedia. Keinerlei weitere Informationen, um mit der Anwendung bzw. dem Server zu kommunizieren.</p>



<p>Die Bereitstellung der einzelnen URIs erfolgt dabei beispielsweise in Form von href- und src-Attributen. Vorausgesetzt es handelt sich um <a href="https://ceosbay.com/2022/12/29/erklaerung-html/" target="_blank" rel="noreferrer noopener">HTML</a>-Dokumente oder -Snippets. Auch durch <a href="https://ceosbay.com/2023/03/14/erklaerung-json/" target="_blank" rel="noreferrer noopener">JSON</a>&#8211; bzw. <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a>-Attribute/-Elemente, die der jeweilige Client automatisch erkennt.</p>



<p>Durch die Umsetzung des HATEOAS-Prinzips lässt sich die Schnittstelle eines <a href="https://ceosbay.com/2023/03/14/erklaerung-json/" target="_blank" rel="noreferrer noopener">REST</a>-Services jederzeit anpassen. Dies kann ein wichtiger Vorteil dieser Architektur gegenüber anderen Applikationsstrukturen sein. Vor allem im direkten Vergleich mit Anwendungen, die man auf Grundlage von SOAP (Simple Object Access Protocol) ausführt.</p>



<p>Das HATEOAS-Konzept ist wichtig, weil es die Flexibilität und Skalierbarkeit von RESTful APIs verbessert. Ohne HATEOAS müsste ein Client spezifische URLs und Endpunkte kennen, um eine Anwendung effektiv zu nutzen. Dies kann jedoch kritisch sein, da URLs sich in der Regel ändern können. Diese Tatsache kann jedoch eben auch zu Fehlern und fehlerhaften Anfragen führen.</p>



<p>Durch die Verwendung von Hypertext-Links wird ein Client in die Lage versetzt, den aktuellen Zustand der Anwendung zu verstehen und dynamisch zu navigieren. Wenn beispielsweise ein Client eine Anfrage an den Server sendet, um eine Liste von Benutzern abzurufen, könnte der Server eine Antwort zurückgeben, die Links zu den einzelnen Benutzerdetails enthält. Der Client kann dann den Link zu einem bestimmten Benutzer folgen, um weitere Informationen abzurufen.</p>



<p>Ein Beispiel ist eine Bestellungsverwaltung in einem Online-Shop. Wenn ein Kunde eine Bestellung aufgeben möchte, kann der Server eine Antwort zurückgeben. Die enthalten wiederum Links zu den verschiedenen Schritten des Bestellvorgangs. Um beispielsweise den Warenkorb anzuzeigen, die Versandadresse anzugeben, Zahlungsinformationen anzugeben, etc. Der Client kann dann den Link zum nächsten Schritt folgen, ohne spezifische URLs oder Endpunkte zu kennen.</p>



<p>HATEOAS ist jedoch nicht nur für die Navigation innerhalb einer Anwendung wichtig. Es ermöglicht auch eine einfache Integration mit anderen Anwendungen und Diensten. Wenn eine API beispielsweise HATEOAS-konform ist, kann man sie von anderen Anwendungen oder Diensten aus leichter nutzen, da sie den Zustand der Anwendung und die verfügbaren Aktionen verstehen können.</p>



<h3 class="wp-block-heading">Fazit</h3>



<p>Insgesamt verbessert das HATEOAS-Konzept die Flexibilität und Skalierbarkeit von RESTful APIs, indem es Clients in die Lage versetzt, dynamisch zu navigieren und den aktuellen Zustand der Anwendung zu verstehen. Durch die Verwendung von Hypertext-Links werden Anwendungen leichter integrierbar und besser wartbar. Wenn man also eine RESTful API entwirft, sollte man in Betracht ziehen, HATEOAS zu verwenden, um die Nutzbarkeit und die Flexibilität der Anwendung zu optimieren.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/29/erklaerung-hateoas/">HATEOAS &#8211; Evolution von REST für selbsterklärende APIs und zukunftssichere Web-Anwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/29/erklaerung-hateoas/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1055</post-id>	</item>
		<item>
		<title>REST &#8211; Schönheit der einfachen Architektur</title>
		<link>https://ceosbay.com/2022/12/23/erklaerung-rest/</link>
					<comments>https://ceosbay.com/2022/12/23/erklaerung-rest/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Fri, 23 Dec 2022 19:00:00 +0000</pubDate>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[7252]]></category>
		<category><![CDATA[Application]]></category>
		<category><![CDATA[Applikation]]></category>
		<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Client]]></category>
		<category><![CDATA[CoAP]]></category>
		<category><![CDATA[Demand]]></category>
		<category><![CDATA[Get]]></category>
		<category><![CDATA[HATEOAS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mkcol]]></category>
		<category><![CDATA[Move]]></category>
		<category><![CDATA[Parser]]></category>
		<category><![CDATA[Post]]></category>
		<category><![CDATA[Protokoll]]></category>
		<category><![CDATA[Rest]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[URI]]></category>
		<category><![CDATA[URL]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[xml]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1033</guid>

					<description><![CDATA[<p>REST &#8211; Representational State Transfer ist ein Paradigma für die Softwarearchitektur von verteilten Systemen, insbesondere für Webservices. Es ist eine Abstraktion der Struktur und des Verhaltens des WWW (World Wide Web). REST hat das Ziel, &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/12/23/erklaerung-rest/">REST &#8211; Schönheit der einfachen Architektur</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>REST &#8211; Representational State Transfer ist ein Paradigma für die Softwarearchitektur von verteilten Systemen, insbesondere für Webservices. Es ist eine Abstraktion der Struktur und des Verhaltens des WWW (World Wide Web). REST hat das Ziel, einen Architekturstil zu schaffen, der den Anforderungen des modernen Web besser genügt. Dabei unterscheidet sich REST vor allem in der Forderung nach einer einheitlichen Schnittstelle von anderen Architekturstilen.</p>



<p>Der Zweck von REST liegt schwerpunktmäßig auf der Maschine-zu-Maschine-Kommunikation. REST stellt eine einfache Alternative zu ähnlichen Verfahren wie SOAP (Simple Object Access Protocol), WSDL (Web Services Description Language) und dem verwandten Verfahren RPC (Remote Procedure Call) dar. Anders als bei vielen verwandten Architekturen kodiert REST keine Methodeninformation in den URI (Uniform Resource Identifier), da der URI Ort und Namen der Ressource angibt, nicht aber die Funktionalität, die der Web-Dienst zu der Ressource anbietet. Der Vorteil von REST liegt darin, dass im WWW bereits ein Großteil der für REST nötigen Infrastruktur (z. B. Web- und Application-Server, https-fähige Clients, HTML- und XML-Parser, Sicherheitsmechanismen) vorhanden ist und viele Web-Dienste per se REST-konform sind. Eine Ressource kann dabei über verschiedene Medientypen dargestellt werden, auch Repräsentation der Ressource genannt.</p>



<p>So ist ein Online-Dienst, der lediglich unveränderte Seiteninhalte nach dem Internetstandard https anbietet, bereits REST-konform. Dynamisch erzeugte Seiten folgen diesem Paradigma jedoch meistens nicht. So bieten beispielsweise Nachrichtenseiten sich ständig ändernde Informationen mit sowohl unterschiedlichem Format als auch Inhalt an, die nur schwer automatisch verarbeitet werden können. Bliebe das Format unverändert, so wäre eine essenzielle REST-Eigenschaft erfüllt. So ist eine Webseite, auf der ständig die aktuelle Uhrzeit in immer demselben Format abrufbar ist, REST-konform.</p>



<p>Die Bezeichnung „Representational State Transfer“ soll den Übergang vom aktuellen Zustand zum nächsten Zustand (State) einer Applikation verbildlichen. Dieser Zustandsübergang erfolgt durch den Transfer der Daten, die den nächsten Zustand repräsentieren.</p>



<h3 class="wp-block-heading">Kurze Zeitreise</h3>



<p>Das REST-Paradigma entwickelte sich aus dem 1994 von Roy Fielding entworfenen https Object Model. Fielding entwickelte seine Idee von einem einheitlichen Konzept über die Jahre weiter, bis er 2000 den REST-Architekturstil im Rahmen seiner Dissertation (<a href="https://www.ics.uci.edu/~fielding/pubs/dissertation/fielding_dissertation.pdf" target="_blank" rel="noreferrer noopener">Hier der Link zu der Arbeit</a>) veröffentlichte. Das Programmierparadigma der „RESTful Application“ wurde allerdings häufig falsch umgesetzt und findet erst seit 2014 Anklang in der Welt des WWW. In seiner Arbeit geht Fielding dabei auf die verschiedenen Anforderungen ein, die für die Webarchitektur wichtig sind.</p>



<h3 class="wp-block-heading">Wie funktioniert REST?</h3>



<p>Der Architektur-Stil verweist auf sechs Eigenschaften, die ein Dienst haben muss. Dabei ist nicht festgelegt, wie man diese Prinzipien implementieren muss. Fielding beschreibt für jedes Architekturprinzip dessen Vor- und Nachteile. Dabei handelt es sich um Client-Server, Zustandslosigkeit, Caching, Einheitliche Schnittstellen, Mehrschichtige Systeme und optional Code on Demand, auf die ich nachfolgend eingehen werde.</p>



<ul class="wp-block-list">
<li>Client-Server (Es gilt generell die Anforderung, dass alle Eigenschaften der Client-Server-Architektur gelten. Der Server stellt dabei einen Dienst bereit, der bei Bedarf vom Client abgefragt wird. Der Hauptvorteil dieser Anforderung ist die einfache Skalierbarkeit der Server, da diese unabhängig vom Client agieren. Dies ermöglicht des Weiteren eine unterschiedlich schnelle Entwicklung der beiden Komponenten.)<br></li>



<li>Zustandslosigkeit (Jede REST-Nachricht enthält alle Informationen, die für den Server bzw. für den Client notwendig sind, um die Nachricht zu interpretieren. Weder der Server noch die Anwendung soll Zustandsinformationen zwischen zwei Nachrichten speichern. Man spricht daher von einem zustandslosen (englisch: stateless) Protokoll. Jede Anfrage eines Clients an den Server ist insofern in sich geschlossen, als dass sie sämtliche Informationen über den Anwendungszustand beinhaltet, die vom Server für die Verarbeitung der Anfrage benötigt. Zustandslosigkeit in der hier beschriebenen Form begünstigt die Skalierbarkeit eines Webservices. Beispielsweise können eingehende Anfragen im Zuge der Lastverteilung unkompliziert auf beliebige Maschinen verteilt werden, da jede Anfrage in sich geschlossen ist und Anwendungsinformationen somit ausschließlich auf der Seite des Clients vorgehalten werden. Aus diesem Grund ist auf der Seite des Servers keine Sitzungsverwaltung erforderlich. In der Praxis nutzen deswegen viele https-basierte Anwendungen Cookies und andere Techniken, um Zustandsinformationen auf der Client-Seite zu behalten. Weiterhin begünstigt wird die Ausfallsicherheit, weil die Zustandslosigkeit fordert, dass transaktionale Datenübertragung in einem einzigen Seitenaufruf erfolgt. Die Zustandslosigkeit bringt dabei aber den Nachteil mit, dass sich die Netzwerkperformance verschlechtert. Da bei jeder Abfrage alle Informationen zum Interpretieren mitgeschickt werden müssen, sind aufwendigere Abfragen nötig, als wenn sich der Server die Interaktionen merken würde.)<br></li>



<li>Caching (https-Caching soll genutzt werden, wobei aber gilt: Eine Anfrage, die nicht gestellt werden muss, ist die schnellste Anfrage. Fielding führt dabei den Nachteil auf, dass der Client auf veraltete Cache-Daten zurückgreifen könnte, statt die neue Ressource abzufragen. Wir kennen dies beispielsweise, wenn wir an einer Website unsere Änderungen vorgenommen haben aber die aktualisierten Informationen nach der Synchronisierung mit dem Server nicht richtig angezeigt werden bzw. lediglich die alten Informationen)<br></li>



<li>Einheitliche Schnittstelle (Dies ist das Hauptunterscheidungsmerkmal aller weiteren Architekturstile. Dabei besteht diese aus vier weiteren Eigenschaften.)</li>
</ul>



<ol class="wp-block-list" type="1">
<li>Die Adressierbarkeit von Ressourcen, bei der jede Information, die über einen URI kenntlich gemacht wird, als Ressource gekennzeichnet wird. Jeder REST-konforme Dienst eine eindeutige Adresse hat und dem Uniform Resource Locator (URL). Diese „Straße und Hausnummer im Netz“ standardisiert den Zugriffsweg zum Angebot eines Webservices für eine Vielzahl von Anwendungen (Clients). Eine konsistente Adressierbarkeit erleichtert es außerdem, einen Webservice als Teil eines Mashups weiterzuverwenden.<br></li>



<li>Repräsentationen zur Veränderung von Ressourcen, wodurch die unter einer Adresse zugänglichen Dienste unterschiedliche Darstellungsformen (Repräsentationen) haben können. Ein REST-konformer Server kann je nachdem, was die Anwendung anfordert, verschiedene Repräsentationen einer Ressource ausliefern, z. B. in verschiedenen Sprachen oder Formaten (HTML, JSON oder XML) oder auch die Beschreibung oder Dokumentation des Dienstes. Die Veränderung einer Ressource (also deren aktuellen Status) soll nur über eine Repräsentation erfolgen.<br></li>



<li>Selbstbeschreibende Nachrichten, REST-Nachrichten sollen selbstbeschreibend sein. Dazu zählt u. a. die Verwendung von Standardmethoden. Über diese Standardmethoden lassen sich Ressourcen manipulieren.<br></li>



<li>„Hypermedia as the Engine of Application State“ (HATEOAS)&nbsp;laut Fielding die wichtigste Eigenschaft</li>
</ol>



<p>Ziel ist die Einheitlichkeit der Schnittstelle und somit ihre einfache Nutzung.&nbsp;</p>



<ul class="wp-block-list">
<li>Mehrschichtige Systeme, bei dem die Systeme mehrschichtig aufgebaut sein sollen. Dadurch reicht es, dem Anwender lediglich eine Schnittstelle anzubieten. Dahinterliegende Ebenen können verborgen bleiben und somit die Architektur insgesamt vereinfachen. Vorteile dabei sind die bessere Skalierbarkeit der Server, sowie eine mögliche Abkapselung durch Firewalls. Durch Cache-Speicher an den Grenzen (z.B. vom Server zum Web) steigert man die Effizienz der Anfragen (Siehe Caching).<br></li>



<li>Code on Demand, wobei diese Forderung von Fielding optional ist. Unter Code on Demand versteht man die Übertragung an den Client Code erst im Bedarfsfall. Folglich zur lokalen Ausführung.&nbsp;Ein Beispiel hierfür wäre die Übertragung von JavaScript-Code bei einer HTML-Repräsentation.</li>
</ul>



<p>Folglich kommt für die Umsetzung des REST-Paradigmas ein zustandsloses Client-Server-Protokoll zum Einsatz. Als Anwendungsschicht-Protokolle werden hauptsächlich https und https eingesetzt. Dies liegt unter anderem daran, dass sich diese im WWW etabliert haben, über einen vergleichsweisen einfachen Aufbau verfügen und mit so gut wie jeder Firewall kompatibel sind. REST vereinheitlicht die Schnittstelle zwischen Systemen auf eine überschaubare und bezüglich des zu erwartenden Verhaltens standardisierte Menge von Aktionen. Welche Aktionen dies sind, ist in REST nicht festgelegt aber alle Aktionen sind allgemein definiert. In der Regel durch die verwendeten Protokolle der Anwendungsschicht.</p>



<p>Während REST als Abstraktion des WWW keine spezielle Implementierung und kein spezielles Protokoll fordert, ist doch zu beobachten, dass fast ausschließlich https zum Einsatz kommt. Dadurch werden auch die Menge der Aktionen festgelegt.</p>



<p>Wird über https zugegriffen, so gibt die verwendete https-Methode, darunter GET, POST, PUT und DELETE, an, welche Operation des Dienstes gewünscht ist. https schreibt vor, dass GET „safe“ (sicher) sein muss, was bedeutet, dass diese Methode nur Informationen beschafft und keine sonstigen Effekte verursacht. Die Methoden GET, HEAD, PUT und DELETE müssen laut https-Spezifikation idempotent (dasselbe) sein, was in diesem Zusammenhang bedeutet, dass das mehrfache Absenden der gleichen Anforderung sich nicht anders auswirkt als ein einzelner Aufruf. Abhängig von der Implementierung können noch weitere https-Befehle unterstützt werden. Dazu gehören COPY, MOVE, MKCOL, LOCK und UNLOCK des WebDAV-Protokolls, sowie LINK und UNLINK aus RFC 2068. Bei der Kommunikation über UDP kann zudem das CoAP aus RFC 7252 statt https eingesetzt werden, welches leicht abweichende Bedeutungen für GET, POST, PUT und DELETE besitzt.</p>



<h3 class="wp-block-heading">Fazit</h3>



<p>Die meisten Unternehmen verwenden den REST-Architekturstil für die Entwicklung / Implementierung von Webdiensten, da es sich um eine einfache und benutzerfreundliche Oberfläche handelt, die weniger Schulung für die vorhandenen / neuen Mitglieder des Projekts erfordert. Unternehmen erwägen REST zusammen mit ihren vorhandenen Webdiensten.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/12/23/erklaerung-rest/">REST &#8211; Schönheit der einfachen Architektur</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2022/12/23/erklaerung-rest/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1033</post-id>	</item>
	</channel>
</rss>
