<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://opensimulator.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://opensimulator.org/index.php?action=history&amp;feed=atom&amp;title=REST%2Fde</id>
		<title>REST/de - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://opensimulator.org/index.php?action=history&amp;feed=atom&amp;title=REST%2Fde"/>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/index.php?title=REST/de&amp;action=history"/>
		<updated>2026-05-12T05:37:51Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.19.9</generator>

	<entry>
		<id>http://opensimulator.org/index.php?title=REST/de&amp;diff=53031&amp;oldid=prev</id>
		<title>Manni at 12:27, 19 February 2023</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/index.php?title=REST/de&amp;diff=53031&amp;oldid=prev"/>
				<updated>2023-02-19T12:27:33Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 12:27, 19 February 2023&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;__NOTOC__&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{{Quicklinks&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;|REST&lt;/ins&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{{Quicklinks}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{{warning|Diese Schnittstellen sind derzeit in OpenSimulator nicht funktionsfähig, da sie nach der ersten Arbeit nicht verwendet oder gewartet wurden.}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{{warning|Diese Schnittstellen sind derzeit in OpenSimulator nicht funktionsfähig, da sie nach der ersten Arbeit nicht verwendet oder gewartet wurden.}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Manni</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/index.php?title=REST/de&amp;diff=46164&amp;oldid=prev</id>
		<title>Manni: /* Plugin and Configuration Management */</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/index.php?title=REST/de&amp;diff=46164&amp;oldid=prev"/>
				<updated>2018-04-20T21:42:17Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Plugin and Configuration Management&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 21:42, 20 April 2018&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 148:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 148:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Die Verarbeitung bestehender Handler ist von der neuen Unterstützung nicht betroffen.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Die Verarbeitung bestehender Handler ist von der neuen Unterstützung nicht betroffen.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=== Plugin &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;and Configuration Management &lt;/del&gt;===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=== Plugin&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;- und Konfigurationsverwaltung &lt;/ins&gt;===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;tt&amp;gt;&lt;/del&gt;IHttpAgentHandler&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/tt&amp;gt; describes the interface between OpenSimulator's base &lt;/del&gt;HTTP &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;server and the &lt;/del&gt;REST &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;implementation, a plug&lt;/del&gt;-in &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;must implement this interface&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Any class that exports this interface&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;and that registers its handlers using the appropriate &lt;/del&gt;(&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;not defined by an interface&lt;/del&gt;) &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;methods in the base &lt;/del&gt;HTTP &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;server can act as a handler&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Note that while the usage described here is intended to support &lt;/del&gt;REST, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the interface itself is agnostic and may be used as the basis for any &lt;/del&gt;HTTP &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;request handler&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;IHttpAgentHandler &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;beschreibt die Schnittstelle zwischen dem &lt;/ins&gt;HTTP&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Server von OpenSimulator und der &lt;/ins&gt;REST&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Implementierung. Ein Plug&lt;/ins&gt;-in &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;muss diese Schnittstelle implementieren&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Jede Klasse&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;die diese Schnittstelle exportiert und ihre Handler mit den entsprechenden &lt;/ins&gt;(&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;nicht durch eine Schnittstelle definierten&lt;/ins&gt;) &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Methoden im &lt;/ins&gt;HTTP&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Basisserver registriert, kann als Handler fungieren&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Beachten Sie, dass die hier beschriebene Verwendung zwar &lt;/ins&gt;REST &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;unterstützen soll&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;die Schnittstelle selbst jedoch agnostisch ist und als Grundlage für einen &lt;/ins&gt;HTTP&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Anforderungshandler verwendet werden kann&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;tt&amp;gt;'''&lt;/del&gt;RestPlugin.cs&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;'''&amp;lt;/tt&amp;gt; provides a basic agent&lt;/del&gt;-&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;handling superclass&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;An implementation of this class represents a handler from the point of view of the base &lt;/del&gt;HTTP &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;server&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;This class implements the &amp;lt;tt&amp;gt;&lt;/del&gt;IHttpAgentHandler&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/tt&amp;gt; interface&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;A given implementation class need only be differentiated from the others &lt;/del&gt;in &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;terms of the agent name it uses when it registers. At present&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;a duplicate agent &lt;/del&gt;(&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;based upon supplied agent name&lt;/del&gt;) &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;will not be registered; how such a failure is handled depends upon the implementation class&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Aside from the name used&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;a given handler should be differentiated &lt;/del&gt;in &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;terms of the set of request patterns that it will match&lt;/del&gt;; &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;overlap is undesirable as the first match will win&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;and at present the order &lt;/del&gt;in &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;which &lt;/del&gt;OpenSimulator &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;loads modules is non-deterministic&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The &amp;lt;tt&amp;gt;&lt;/del&gt;RestHandler&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/tt&amp;gt; class in the Inventory sub&lt;/del&gt;-&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;directory is an example of an implementation class for ''&lt;/del&gt;RestPlugin.cs&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;''&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;RestPlugin.cs &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;stellt eine grundlegende Agentenhandhabungs&lt;/ins&gt;-&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Oberklasse zur Verfügung&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Eine Implementierung dieser Klasse stellt einen Handler aus der Sicht des Basis-&lt;/ins&gt;HTTP&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Servers dar&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Diese Klasse implementiert die &lt;/ins&gt;IHttpAgentHandler&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;- Schnittstelle&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Eine bestimmte Implementierungsklasse muss nur &lt;/ins&gt;in &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Bezug auf den Agentennamen&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;den sie bei der Registrierung verwendet, von den anderen unterschieden werden. Gegenwärtig wird ein doppelter Agent &lt;/ins&gt;(&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;basierend auf dem angegebenen Agentennamen&lt;/ins&gt;) &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;nicht registriert&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Wie ein solcher Fehler behandelt wird&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;hängt von der Implementierungsklasse ab. Abgesehen von dem verwendeten Namen sollte ein gegebener Handler &lt;/ins&gt;in &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Bezug auf die Menge der Anforderungsmuster, die er abgleicht, unterschieden werden&lt;/ins&gt;; &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Überlappung ist unerwünscht, da die erste Übereinstimmung gewinnt, und derzeit ist die Reihenfolge&lt;/ins&gt;, in &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;der &lt;/ins&gt;OpenSimulator &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Module lädt, nicht deterministisch&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Die &lt;/ins&gt;RestHandler- &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Klasse im Unterverzeichnis Inventory ist ein Beispiel für eine Implementierungsklasse für &lt;/ins&gt;RestPlugin.cs .&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;tt&amp;gt;'''&lt;/del&gt;Inventory/RestHandler.cs&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;'''&amp;lt;/tt&amp;gt; implements the plug&lt;/del&gt;-in &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;interface described above, and also implements a local model of integrating a set of services within a single handler instance&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;It does this by scanning the classes included &lt;/del&gt;in &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the assembly for those that implement the &amp;lt;tt&amp;gt;&lt;/del&gt;IRest&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/tt&amp;gt; interface; each such class is then initialized&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;This provides implementation independence from a development standpoint &lt;/del&gt;(&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;adding a new service is as simple as adding a single class&lt;/del&gt;) &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;whilst avoiding unnecessary overt modularization &lt;/del&gt;in OpenSimulator. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;This class also takes care of global configuration and initialization of the basic &lt;/del&gt;REST &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;environment&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;i.e. It sets basic references for the &lt;/del&gt;OpenSimulator &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;communications manager, user services&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;inventory services&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;and asset management&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Inventory / RestHandler.cs &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;implementiert die oben beschriebene Plug-In&lt;/ins&gt;-&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Schnittstelle und implementiert auch ein lokales Modell zur Integration einer Gruppe von Diensten &lt;/ins&gt;in &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;eine einzige Handler-Instanz&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Dazu werden die &lt;/ins&gt;in &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;der Assembly enthaltenen Klassen auf diejenigen überprüft , die die &lt;/ins&gt;IRest&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;- Schnittstelle implementieren. Jede solche Klasse wird dann initialisiert&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Dies bietet Entwicklungsunabhängigkeit von einem Entwicklungsstandpunkt aus &lt;/ins&gt;(&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Hinzufügen eines neuen Service ist so einfach wie das Hinzufügen einer einzelnen Klasse&lt;/ins&gt;)&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;, während unnötige offene Modularisierung &lt;/ins&gt;in OpenSimulator &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;vermieden wird&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Diese Klasse kümmert sich auch um die globale Konfiguration und Initialisierung der Basis-&lt;/ins&gt;REST&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Umgebung&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;dh sie legt grundlegende Referenzen für den &lt;/ins&gt;OpenSimulator&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Kommunikationsmanager&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Benutzerdienste&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Inventardienste und die Bestandsverwaltung fest&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;For performance reasons, and as an obligation to the &amp;lt;tt&amp;gt;&lt;/del&gt;IHttpAgentHandler&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/tt&amp;gt; definition&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;this class also implements the Match function&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;using pattern information registered by the individual services when they were initialized1&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Aus Leistungsgründen und als Verpflichtung gegenüber der &lt;/ins&gt;IHttpAgentHandler&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;- Definition implementiert diese Klasse auch die Match-Funktion&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;wobei Musterinformationen verwendet werden &lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;die bei der Initialisierung der einzelnen Dienste registriert wurden1 &lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;This class contains no &lt;/del&gt;REST &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;specific&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;or service specific functionality beyond some basic initialization&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;This class can be used &lt;/del&gt;in &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;multiple assemblies without change&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Diese Klasse enthält keine &lt;/ins&gt;REST&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-spezifische oder dienstspezifische Funktionalität&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;die über eine grundlegende Initialisierung hinausgeht&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Diese Klasse kann &lt;/ins&gt;in &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;mehreren Assemblys ohne Änderung verwendet werden&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;tt&amp;gt;'''&lt;/del&gt;Rest.cs&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;'''&amp;lt;/tt&amp;gt; provides both state and functionality in support of the &lt;/del&gt;REST &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;implementation&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Most of the state is static and constant&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;a small set of static values are initialized by the &amp;lt;tt&amp;gt;&lt;/del&gt;RestHandler&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/tt&amp;gt; when the plug&lt;/del&gt;-in &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;is loaded&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;This class will only change as the &lt;/del&gt;REST &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;implementation evolves and becomes more complete&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;I''t must not contain any &lt;/del&gt;service &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;sensitive elements.'' This class may be sub&lt;/del&gt;-&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;classed by a given assembly to provide global additions required by a specific set of services&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Rest.cs &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;bietet sowohl den Status als auch die Funktionalität zur Unterstützung der &lt;/ins&gt;REST&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Implementierung&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Der größte Teil des Status ist statisch und konstant&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;ein kleiner Satz statischer Werte wird vom &lt;/ins&gt;RestHandler &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;initialisiert, wenn das Plug&lt;/ins&gt;-in &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;geladen wird&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Diese Klasse wird sich nur ändern, wenn sich die &lt;/ins&gt;REST&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Implementierung entwickelt und vollständiger wird&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Es darf keine &lt;/ins&gt;service-&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;sensitiven Elemente enthalten. Diese Klasse kann von einer bestimmten Assembly unterklassifiziert werden, um globale Additionen bereitzustellen, die für eine bestimmte Gruppe von Services erforderlich sind&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;tt&amp;gt;'''&lt;/del&gt;RequestData.cs&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;'''&amp;lt;/tt&amp;gt; serves as a carrier for the state associated with a request&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;It may be sub-classed by a given service provider in order to add service specific state and functionality&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;for example the inventory services currently utilize an &lt;/del&gt;XML &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;extension to handle inventory specific payload interpretation and generation&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;RequestData.cs &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;dient als Träger für den einer Anfrage zugeordneten Status&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Es kann von einem bestimmten Dienstanbieter unterklassifiziert werden&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;um dienstspezifische Zustände und Funktionen hinzuzufügen, z. B. verwenden die Inventardienste derzeit eine &lt;/ins&gt;XML&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Erweiterung, um die inventarspezifische Nutzlastinterpretation und -generierung zu handhaben&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The remaining classes in the &lt;/del&gt;Inventory &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;directory provide different classes of service&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Die verbleibenden Klassen im &lt;/ins&gt;Inventory&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Verzeichnis bieten verschiedene Serviceklassen&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=== Adding A New REST Service To An Existing Handler ===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=== Adding A New REST Service To An Existing Handler ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Manni</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/index.php?title=REST/de&amp;diff=46163&amp;oldid=prev</id>
		<title>Manni: /* Changes to BaseHttpServer */</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/index.php?title=REST/de&amp;diff=46163&amp;oldid=prev"/>
				<updated>2018-04-20T21:41:18Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Changes to BaseHttpServer&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 21:41, 20 April 2018&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 140:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 140:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Wie in Abbildung 1: Gesamtdatenflussmodell gezeigt, stammen alle Anforderungen vom OpenSimulator-HTTP-Server und werden schließlich an diesen zurückgegeben. Der Handler ist von dieser Implementierung durch die IHttpAgentHandler- Schnittstelle und die OSHTTP-Datentypen isoliert. Nach dem Abgleich wird die Anforderung an den entsprechenden Handler übergeben. Diese Beziehung wird durch die IRest- Schnittstelle und den RequestData- Datentyp definiert.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Wie in Abbildung 1: Gesamtdatenflussmodell gezeigt, stammen alle Anforderungen vom OpenSimulator-HTTP-Server und werden schließlich an diesen zurückgegeben. Der Handler ist von dieser Implementierung durch die IHttpAgentHandler- Schnittstelle und die OSHTTP-Datentypen isoliert. Nach dem Abgleich wird die Anforderung an den entsprechenden Handler übergeben. Diese Beziehung wird durch die IRest- Schnittstelle und den RequestData- Datentyp definiert.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=== &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Changes to &lt;/del&gt;BaseHttpServer ===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=== &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Änderungen an &lt;/ins&gt;BaseHttpServer ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The existing &lt;/del&gt;OpenSimulator HTTP &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;server class was modified to support plug&lt;/del&gt;-in &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;modules that conform to the &amp;lt;tt&amp;gt;&lt;/del&gt;IHttpAgentHandler&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/tt&amp;gt; interface&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Three new subroutines were added&lt;/del&gt;: &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;tt&amp;gt;&lt;/del&gt;AddHttpAgentHandler&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/tt&amp;gt;&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;tt&amp;gt;&lt;/del&gt;RemoveHttpAgentHandler&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;&lt;/del&gt;TryHttpAgentHandler&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/tt&amp;gt;&lt;/del&gt;; &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;this is consistent with the way in which existing handlers are managed&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Die vorhandene &lt;/ins&gt;OpenSimulator&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-&lt;/ins&gt;HTTP&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;- Serverklasse wurde geändert, um Plug&lt;/ins&gt;-in&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Module zu unterstützen, die der &lt;/ins&gt;IHttpAgentHandler&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;- Schnittstelle entsprechen&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Drei neue Subroutinen wurden hinzugefügt&lt;/ins&gt;: AddHttpAgentHandler , RemoveHttpAgentHandler &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;und &lt;/ins&gt;TryHttpAgentHandler ; &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Dies entspricht der Art und Weise, wie vorhandene Handler verwaltet werden&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Additionally, the &amp;lt;tt&amp;gt;&lt;/del&gt;HandleRequest&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/tt&amp;gt; method was extended to include support for the &amp;lt;tt&amp;gt;&lt;/del&gt;IHttpAgentHandler&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/tt&amp;gt; interface&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Darüber hinaus wurde die &lt;/ins&gt;HandleRequest&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;- Methode um Unterstützung für die &lt;/ins&gt;IHttpAgentHandler&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;- Schnittstelle erweitert&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The processing of existing handlers is not affected by the new support&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Die Verarbeitung bestehender Handler ist von der neuen Unterstützung nicht betroffen&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=== Plugin and Configuration Management ===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=== Plugin and Configuration Management ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Manni</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/index.php?title=REST/de&amp;diff=46162&amp;oldid=prev</id>
		<title>Manni: /* Implementierungsübersicht */</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/index.php?title=REST/de&amp;diff=46162&amp;oldid=prev"/>
				<updated>2018-04-20T19:34:35Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Implementierungsübersicht&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 19:34, 20 April 2018&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 138:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 138:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:RESTOverallDataFlowModel.jpg|center|thumb|400px|Illustration 1: Overall Data Flow Model]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:RESTOverallDataFlowModel.jpg|center|thumb|400px|Illustration 1: Overall Data Flow Model]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;As shown &lt;/del&gt;in &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Illustration &lt;/del&gt;1: &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Overall Data Flow Model all requests originate&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;and are eventually returned to, the &lt;/del&gt;OpenSimulator HTTP &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;server&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The handler is isolated from this implementation by the &amp;lt;tt&amp;gt;&lt;/del&gt;IHttpAgentHandler&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/tt&amp;gt; interface and the &lt;/del&gt;OSHTTP &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;data&lt;/del&gt;-&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;types&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;After matching, the request is passed to the appropriate handler; this relationship is defined by the &amp;lt;tt&amp;gt;&lt;/del&gt;IRest&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/tt&amp;gt; interface and the &amp;lt;tt&amp;gt;&lt;/del&gt;RequestData&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/tt&amp;gt; data&lt;/del&gt;-&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;type&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Wie &lt;/ins&gt;in &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Abbildung &lt;/ins&gt;1: &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Gesamtdatenflussmodell gezeigt&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;stammen alle Anforderungen vom &lt;/ins&gt;OpenSimulator&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-&lt;/ins&gt;HTTP&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Server und werden schließlich an diesen zurückgegeben&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Der Handler ist von dieser Implementierung durch die &lt;/ins&gt;IHttpAgentHandler&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;- Schnittstelle und die &lt;/ins&gt;OSHTTP-&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Datentypen isoliert&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Nach dem Abgleich wird die Anforderung an den entsprechenden Handler übergeben. Diese Beziehung wird durch die &lt;/ins&gt;IRest&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;- Schnittstelle und den &lt;/ins&gt;RequestData- &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Datentyp definiert&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=== Changes to BaseHttpServer ===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=== Changes to BaseHttpServer ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Manni</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/index.php?title=REST/de&amp;diff=46161&amp;oldid=prev</id>
		<title>Manni: /* Implementation Overview */</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/index.php?title=REST/de&amp;diff=46161&amp;oldid=prev"/>
				<updated>2018-04-20T19:33:24Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Implementation Overview&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 19:33, 20 April 2018&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 126:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 126:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In diesem Fall identifiziert/admin/inventory den Dienst und /Alan Webb ist die Ressourcenspezifikationskomponente des Pfades.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In diesem Fall identifiziert/admin/inventory den Dienst und /Alan Webb ist die Ressourcenspezifikationskomponente des Pfades.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Implementation Overview &lt;/del&gt;==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Implementierungsübersicht &lt;/ins&gt;==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The &lt;/del&gt;REST &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;implementation being described is manifest &lt;/del&gt;in &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;a subset of the files contained &lt;/del&gt;in &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the &amp;lt;tt&amp;gt;&lt;/del&gt;ApplicationPlugins/Rest&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/tt&amp;gt; file hierarchy&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;It is logically partitioned into three domains&lt;/del&gt;:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Die beschriebene &lt;/ins&gt;REST&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Implementierung manifestiert sich &lt;/ins&gt;in &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;einer Teilmenge der Dateien, die &lt;/ins&gt;in &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;der Dateihierarchie &lt;/ins&gt;ApplicationPlugins / Rest &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;enthalten sind&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Es ist logisch in drei Domänen unterteilt&lt;/ins&gt;:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;* &lt;/del&gt;Plugin &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;and configuration management&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; &amp;#160; &lt;/ins&gt;Plugin&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;- und Konfigurationsmanagement&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;* &lt;/del&gt;REST &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;implementation services&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; &amp;#160; &lt;/ins&gt;REST&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Implementierungsservices&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;* &lt;/del&gt;REST &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;service providers&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; &amp;#160; &lt;/ins&gt;REST&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Dienstanbieter &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The objective here being to separate functionality &lt;/del&gt;so &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;that the task of the service provider is made as straightforward as possible while ensuring that all services implemented using the interface are consistent &lt;/del&gt;in &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;both approach and behavior&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Das Ziel besteht darin, die Funktionalität &lt;/ins&gt;so &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;zu trennen, dass die Aufgabe des Dienstanbieters so einfach wie möglich gestaltet wird, während sichergestellt wird, dass alle Dienste, die unter Verwendung der Schnittstelle implementiert werden, sowohl &lt;/ins&gt;in &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;der Vorgehensweise als auch im Verhalten konsistent sind&lt;/ins&gt;. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:RESTOverallDataFlowModel.jpg|center|thumb|400px|Illustration 1: Overall Data Flow Model]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:RESTOverallDataFlowModel.jpg|center|thumb|400px|Illustration 1: Overall Data Flow Model]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Manni</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/index.php?title=REST/de&amp;diff=46160&amp;oldid=prev</id>
		<title>Manni: /* REST Inventory Support */</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/index.php?title=REST/de&amp;diff=46160&amp;oldid=prev"/>
				<updated>2018-04-20T19:31:23Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;REST Inventory Support&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 19:31, 20 April 2018&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 30:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 30:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Andere Methoden (TRACE, OPTIONS, CONNECT) können unterstützt werden, sind jedoch nicht grundlegend für die REST-Prinzipien. Die Verwendung dieser Methoden erfordert auch spezifische Anforderungen hinsichtlich der Verwendung der Antwortcodes. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Andere Methoden (TRACE, OPTIONS, CONNECT) können unterstützt werden, sind jedoch nicht grundlegend für die REST-Prinzipien. Die Verwendung dieser Methoden erfordert auch spezifische Anforderungen hinsichtlich der Verwendung der Antwortcodes. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== REST &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Inventory Support &lt;/del&gt;==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== REST&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Inventarunterstützung &lt;/ins&gt;==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The &lt;/del&gt;REST &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;support &lt;/del&gt;in OpenSimulator &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;is separated into a number of functional components&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;all of which live &lt;/del&gt;in &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the &lt;/del&gt;OpenSimulator/ApplicationPlugins/Rest &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;hierarchy&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Die &lt;/ins&gt;REST&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Unterstützung &lt;/ins&gt;in OpenSimulator &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;ist in mehrere funktionale Komponenten unterteilt&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;die alle &lt;/ins&gt;in &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;der Hierarchie von &lt;/ins&gt;OpenSimulator / ApplicationPlugins / Rest &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;enthalten sind&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;# &lt;/del&gt;Plug-in &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;management. E.g. &lt;/del&gt;RestPlugin.cs &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;and &lt;/del&gt;Inventory/RestHandler.cs&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; &amp;#160; &lt;/ins&gt;Plug-in&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Verwaltung ZB &lt;/ins&gt;RestPlugin.cs &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;und &lt;/ins&gt;Inventory / RestHandler.cs&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;# Service management&lt;/del&gt;: &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Inventory&lt;/del&gt;/RestHandler.cs&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; &amp;#160; Servicemanagement&lt;/ins&gt;: &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Inventar &lt;/ins&gt;/ RestHandler.cs&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;# &lt;/del&gt;REST &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;implementation&lt;/del&gt;: RequestData.cs, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Rest&lt;/del&gt;.cs&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; &amp;#160; &lt;/ins&gt;REST&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Implementierung&lt;/ins&gt;: RequestData.cs, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;​​Rest&lt;/ins&gt;.cs&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;# &lt;/del&gt;Service &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;implementations&lt;/del&gt;: Inventory/RestInventoryServices.cs, Inventory/RestAssetServices.cs&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;, etc&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; &amp;#160; &lt;/ins&gt;Service&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Implementierungen&lt;/ins&gt;: Inventory / RestInventoryServices.cs, Inventory / RestAssetServices.cs &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;usw&lt;/ins&gt;. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;This separation serves a number of purposes&lt;/del&gt;:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Diese Trennung dient einer Reihe von Zwecken&lt;/ins&gt;:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;* it limits the sensitivity of each component to implementation changes &lt;/del&gt;in &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the others&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; &amp;#160; es begrenzt die Empfindlichkeit jeder Komponente auf Implementierungsänderungen &lt;/ins&gt;in &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;den anderen&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;* it simplifies the task of service implementation by “hiding” infrastructure&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; &amp;#160; Es vereinfacht die Aufgabe der Service-Implementierung, indem es die Infrastruktur &amp;quot;versteckt&amp;quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;* it helps make services consistent by sharing a single implementation of &lt;/del&gt;REST &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;related tasks&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; &amp;#160; Es trägt dazu bei, Services konsistent zu machen, indem eine einzige Implementierung von &lt;/ins&gt;REST&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-bezogenen Aufgaben gemeinsam genutzt wird &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The design intention is that each subdirectory &lt;/del&gt;in &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the &lt;/del&gt;REST &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;hierarchy&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;I.e. Inventory&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;corresponds to a distinct &lt;/del&gt;REST &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;handler assembly consisting of service management and one or more service implementations&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The &lt;/del&gt;Inventory &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;directory is one example of such an assembly&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Die Entwurfsabsicht besteht darin, dass jedes Unterverzeichnis &lt;/ins&gt;in &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;der &lt;/ins&gt;REST&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Hierarchie&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;dh Inventar&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;einer bestimmten &lt;/ins&gt;REST&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Handler-Assembly entspricht, die aus der Dienstverwaltung und einer oder mehreren Dienstimplementierungen besteht&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Das &lt;/ins&gt;Inventory&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Verzeichnis ist ein Beispiel für eine solche Assembly&lt;/ins&gt;. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=== &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Configuration Parameters &lt;/del&gt;===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=== &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Konfigurationsparameter &lt;/ins&gt;===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;In order for the &lt;/del&gt;REST &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;handlers to be loaded and effective&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;statements must be added to the &lt;/del&gt;OpenSimulator.ini &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;file&lt;/del&gt;. OpenSimulator &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;reads the initialization file during start-up&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;This file is partitioned into various functional domains&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;e.g.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Damit die &lt;/ins&gt;REST&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Handler geladen und wirksam werden können&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;müssen Anweisungen der &lt;/ins&gt;OpenSimulator.ini&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Datei hinzugefügt werden&lt;/ins&gt;. OpenSimulator &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;liest die Initialisierungsdatei während des Startvorgangs&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Diese Datei ist in verschiedene Funktionsbereiche unterteilt&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;z&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 63:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 63:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The &amp;lt;tt&amp;gt;&lt;/del&gt;RestPlugins&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/tt&amp;gt; partition affects &lt;/del&gt;REST &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;handlers in general and supports the following entries&lt;/del&gt;:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Die &lt;/ins&gt;RestPlugins&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;- Partition betrifft im Allgemeinen &lt;/ins&gt;REST&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Handler und unterstützt die folgenden Einträge&lt;/ins&gt;:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 72:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 72:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Only &amp;lt;tt&amp;gt;&lt;/del&gt;enabled=true&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/tt&amp;gt; is necessary to enable REST processing&lt;/del&gt;. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Zur Aktivierung der REST-Verarbeitung ist nur &lt;/ins&gt;enabled = true &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;erforderlich&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Additionally, &lt;/del&gt;REST &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;inventory processing currently requires that the following partition be defined&lt;/del&gt;:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Darüber hinaus erfordert die &lt;/ins&gt;REST&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Inventarverarbeitung derzeit, dass die folgende Partition definiert wird&lt;/ins&gt;: &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 87:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 87:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The partition name corresponds to the &amp;lt;tt&amp;gt;&lt;/del&gt;ConfigName&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/tt&amp;gt; value specified &lt;/del&gt;in &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the plug&lt;/del&gt;-in &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;subclass, I.e. &lt;/del&gt;RestHandler.cs.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Der Partitionsname entspricht dem &lt;/ins&gt;ConfigName&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;- Wert, der &lt;/ins&gt;in &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;der Plug&lt;/ins&gt;-in&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Unterklasse &amp;quot;Ie &lt;/ins&gt;RestHandler.cs&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;quot; angegeben ist&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Again, only the &lt;/del&gt;enabled=true &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;entry must be provided to enable the inventory handler; all other defaults are acceptable for normal operation&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The meanings of these values will become apparent in the rest of the document&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Auch hier muss nur der Eintrag &lt;/ins&gt;enabled = true &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;bereitgestellt werden, um den Inventory-Handler zu aktivieren. Alle anderen Standardeinstellungen sind für den normalen Betrieb akzeptabel&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Die Bedeutung dieser Werte wird im Rest des Dokuments deutlich werden&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;When the server starts&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the &lt;/del&gt;REST &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;handler will publish several messages indicating which configuration values are in effect&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Wenn der Server gestartet wird&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;veröffentlicht der &lt;/ins&gt;REST&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Handler mehrere Nachrichten, die angeben, welche Konfigurationswerte wirksam sind&lt;/ins&gt;. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=== &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Effective &lt;/del&gt;URI ===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=== &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Effektive &lt;/ins&gt;URI ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;From a &lt;/del&gt;REST &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;perspective, the path component of the &lt;/del&gt;URI &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;is viewed as a resource identification&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the precise significance of which depends upon the &lt;/del&gt;HTTP &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;method being used&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;There are subtleties here&lt;/del&gt;, in &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;some cases a prefix of the path may be viewed as a functional qualification of the authority&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;with the remainder of the &lt;/del&gt;URI &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;being a resource identification within the domain of that authority&lt;/del&gt;. In &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;this document, the notion of a service corresponds to the functional qualification mechanism just described&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Aus einer &lt;/ins&gt;REST&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Perspektive wird die Pfadkomponente des &lt;/ins&gt;URI &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;als eine Ressourcenidentifikation angesehen&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;deren genaue Bedeutung von der verwendeten &lt;/ins&gt;HTTP&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Methode abhängt&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Hier gibt es Feinheiten&lt;/ins&gt;, in &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;einigen Fällen kann ein Präfix des Pfades als eine funktionale Qualifikation der Autorität angesehen werden&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;wobei der Rest des &lt;/ins&gt;URI &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;eine Ressourcenidentifikation innerhalb der Domäne dieser Autorität darstellt&lt;/ins&gt;. In &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;diesem Dokument entspricht der Begriff eines Dienstes dem soeben beschriebenen funktionalen Qualifizierungsmechanismus&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The &amp;lt;tt&amp;gt;prefix&amp;lt;/tt&amp;gt; value &lt;/del&gt;in &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the configuration file is used to construct the server's base prefix for &lt;/del&gt;REST &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;services&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;as illustrated &lt;/del&gt;in &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the description of the inventory services prefix shown below&lt;/del&gt;:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Der Präfixwert &lt;/ins&gt;in &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;der Konfigurationsdatei wird verwendet, um das Basispräfix des Servers für &lt;/ins&gt;REST&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Dienste zu erstellen&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;wie &lt;/ins&gt;in &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;der folgenden Beschreibung des Inventardienstpräfixes dargestellt&lt;/ins&gt;: &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 104:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 104:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;this &lt;/del&gt;URI &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;tt&amp;gt;&lt;/del&gt;/admin&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;&lt;/del&gt;/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;tt&amp;gt; is the base prefix&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;and &amp;lt;tt&amp;gt;/inventory&amp;lt;/tt&amp;gt; is a prefix extension that identifies the inventory service handler&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;dieser &lt;/ins&gt;URI/admin &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;befindet sich das Basispräfix und &lt;/ins&gt;/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;inventory ist eine Präfixerweiterung&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;die den Inventory-Service-Handler identifiziert&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;All requests that have an &amp;lt;tt&amp;gt;&lt;/del&gt;/admin/inventory&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/tt&amp;gt; prefix will be passed to the inventory handler&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The prefix must be followed by the name of the avatar that owns the inventory in question&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;For example&lt;/del&gt;:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Alle Anfragen mit dem Präfix&lt;/ins&gt;/admin/inventory &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;werden an den Inventory-Handler übergeben&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Auf das Präfix muss der Name des Avatars folgen, der das fragliche Inventar besitzt&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Beispielsweise&lt;/ins&gt;: &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 112:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 112:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Assuming the &lt;/del&gt;GET &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;method, then this will return &lt;/del&gt;Alan Webb&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;'s inventory catalog, as &lt;/del&gt;XML &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;data &lt;/del&gt;in &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the response payload&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;for example&lt;/del&gt;:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Unter der Annahme der &lt;/ins&gt;GET&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Methode wird der Bestandskatalog von &lt;/ins&gt;Alan Webb &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;als &lt;/ins&gt;XML&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Daten &lt;/ins&gt;in &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;den Nutzdaten der Antwort zurückgegeben&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;zum Beispiel&lt;/ins&gt;:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 124:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 124:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;this case &amp;lt;tt&amp;gt;&lt;/del&gt;/admin/inventory&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/tt&amp;gt; identiifes the service, and &amp;lt;tt&amp;gt;&lt;/del&gt;/Alan Webb&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/tt&amp;gt; is the resource specification component of the path&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;diesem Fall identifiziert&lt;/ins&gt;/admin/inventory &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;den Dienst und &lt;/ins&gt;/Alan Webb &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;ist die Ressourcenspezifikationskomponente des Pfades&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Implementation Overview ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Implementation Overview ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Manni</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/index.php?title=REST/de&amp;diff=46159&amp;oldid=prev</id>
		<title>Manni at 19:24, 20 April 2018</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/index.php?title=REST/de&amp;diff=46159&amp;oldid=prev"/>
				<updated>2018-04-20T19:24:36Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 19:24, 20 April 2018&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 2:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 2:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{{Quicklinks}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{{Quicklinks}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{{warning|&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;These interfaces are not currently functional &lt;/del&gt;in OpenSimulator &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;as they were not used or maintained after the initial work&lt;/del&gt;.}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{{warning|&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Diese Schnittstellen sind derzeit &lt;/ins&gt;in OpenSimulator &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;nicht funktionsfähig, da sie nach der ersten Arbeit nicht verwendet oder gewartet wurden&lt;/ins&gt;.}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The following is taken from Alan M Webb's ''&lt;/del&gt;OpenSim REST Support&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;'' &lt;/del&gt;Draft &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;document dated 8/&lt;/del&gt;18&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;/&lt;/del&gt;08. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The information here and specification are works &lt;/del&gt;in &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;progress but provide the basis for useful &lt;/del&gt;OpenSimulator &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;integrations including content input and retrieval without direct &lt;/del&gt;DB &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;access&lt;/del&gt;. -&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;-[[User:&lt;/del&gt;MoHax&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;|MoHax]] &lt;/del&gt;00:10, 10 &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;October &lt;/del&gt;2008 (UTC)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Das Folgende stammt aus dem &lt;/ins&gt;OpenSim REST Support Draft &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Dokument von Alan M Webb vom &lt;/ins&gt;18&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;.&lt;/ins&gt;08.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;08. Die hier enthaltenen Informationen und Spezifikationen sind &lt;/ins&gt;in &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Arbeit, bilden aber die Grundlage für nützliche &lt;/ins&gt;OpenSimulator&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Integrationen, einschließlich der Eingabe und Abfrage von Inhalten ohne direkten &lt;/ins&gt;DB&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Zugriff&lt;/ins&gt;. - MoHax 00:10, 10&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;. Oktober &lt;/ins&gt;2008 (UTC)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;There are a number of REST interfaces implemented within &lt;/del&gt;OpenSimulator. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;This document describes the work done to support specific interactions required in support of external application integration&lt;/del&gt;. XML &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;is used to encode the payloads associated with these requests&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The specific &lt;/del&gt;XML &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;used is documented as an appendix&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;this is an interim specification&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;In &lt;/ins&gt;OpenSimulator &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;sind mehrere REST-Schnittstellen implementiert&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Dieses Dokument beschreibt die Arbeit zur Unterstützung spezifischer Interaktionen, die zur Unterstützung der externen Anwendungsintegration erforderlich sind&lt;/ins&gt;. XML &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;wird verwendet, um die Payloads zu codieren, die diesen Anforderungen zugeordnet sind&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Das spezifische verwendete &lt;/ins&gt;XML &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;ist als Anhang dokumentiert&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;dies ist eine Zwischenspezifikation&lt;/ins&gt;. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;What is &lt;/del&gt;REST? ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Was ist &lt;/ins&gt;REST? ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The notion of &lt;/del&gt;Representational State Transfer (REST) &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;was introduced by &lt;/del&gt;Roy Fielding in &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;his doctoral dissertation in 2000&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;It is essentially an architectural concept rather than a protocol&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;and this has led to a variety of implementations&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;all of which might claim to be compliant &lt;/del&gt;REST &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;implementations.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Der Begriff des &lt;/ins&gt;Representational State Transfer (REST) &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;​​wurde von &lt;/ins&gt;Roy Fielding &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;im Jahr 2000 &lt;/ins&gt;in &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;seiner Dissertation eingeführt&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Es ist im Wesentlichen ein architektonisches Konzept und kein Protokoll&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;was zu einer Vielzahl von Implementierungen geführt hat&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;von denen alle behaupten könnten, dass sie konform sind &lt;/ins&gt;REST&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Implementierungen&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;A &lt;/del&gt;REST &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;interface is built upon the &lt;/del&gt;HTTP &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;protocol&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;making use of the four principle methods defined therein&lt;/del&gt;: GET, PUT, POST&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;, and &lt;/del&gt;DELETE. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;A fifth method &lt;/del&gt;HEAD &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;is also supported&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;but that is really just a semantic variation of &lt;/del&gt;GET. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The &lt;/del&gt;TRACE &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;and &lt;/del&gt;OPTIONS &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;methods have a less fundamental role&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;No other protocol is involved&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Eine &lt;/ins&gt;REST&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Schnittstelle baut auf dem &lt;/ins&gt;HTTP&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Protokoll auf&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;wobei sie die vier Hauptmethoden verwendet, die darin definiert sind&lt;/ins&gt;: GET, PUT, POST &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;und &lt;/ins&gt;DELETE. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Eine fünfte Methode &lt;/ins&gt;HEAD &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;wird ebenfalls unterstützt&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;aber das ist wirklich nur eine semantische Variation von &lt;/ins&gt;GET. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Die &lt;/ins&gt;TRACE&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;- und &lt;/ins&gt;OPTIONS&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Methoden spielen eine weniger grundlegende Rolle&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Kein anderes Protokoll ist beteiligt&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Note that &lt;/del&gt;REST &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;does not specify the nature of the payload either sent or received&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The interface associated with this document uses &lt;/del&gt;XML &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;meta&lt;/del&gt;-&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;data to manage an arbitrary payload&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The need for a schema document to give form to this &lt;/del&gt;XML &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;will be dealt with as a &lt;/del&gt;separate &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;discussion&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Beachten Sie, dass &lt;/ins&gt;REST &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;die Art der gesendeten oder empfangenen Payload nicht angibt&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Die mit diesem Dokument verbundene Schnittstelle verwendet &lt;/ins&gt;XML-&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Metadaten zum Verwalten einer beliebigen Nutzlast&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Die Notwendigkeit eines Schemadokuments, um diesem &lt;/ins&gt;XML &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Form zu geben, wird als &lt;/ins&gt;separate &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Diskussion behandelt&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Of particular significance is the understood meaning of the methods themselves&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;which is &lt;/del&gt;(&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;and must be&lt;/del&gt;) &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;as defined by the HTTP specification&lt;/del&gt;:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Von besonderer Bedeutung ist die verstandene Bedeutung der Methoden selbst&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;die in der HTTP-Spezifikation definiert ist &lt;/ins&gt;(&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;und sein muss&lt;/ins&gt;): &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* '''GET''' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;retrieves the information identified by the associated &lt;/del&gt;URI &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;and returns it to the requester&lt;/del&gt;. GET &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;is &lt;/del&gt;idempotent. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;If the &lt;/del&gt;URI &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;identifies a process&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;then it is the output of that process which is returned, and not the source text of that process&lt;/del&gt;. GET &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;is conditional when the headers include any of the &lt;/del&gt;If &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;headers&lt;/del&gt;. GET &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;is partial if a range related header is included&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The results of &lt;/del&gt;GET &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;may be able to be cached&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* '''GET''' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;ruft die durch den zugeordneten &lt;/ins&gt;URI &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;identifizierten Informationen ab und gibt sie an den Anforderer zurück&lt;/ins&gt;. GET &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;ist &lt;/ins&gt;idempotent. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Wenn der &lt;/ins&gt;URI &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;einen Prozess identifiziert&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;wird die Ausgabe dieses Prozesses und nicht der Quelltext dieses Prozesses zurückgegeben&lt;/ins&gt;. GET &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;ist bedingt, wenn die Header einen der &lt;/ins&gt;If&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Header enthalten&lt;/ins&gt;. GET &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;ist partiell, wenn ein bereichsbezogener Header enthalten ist&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Die Ergebnisse von &lt;/ins&gt;GET &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;können möglicherweise zwischengespeichert werden&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* '''HEAD''' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;is functionally equivalent to &lt;/del&gt;GET &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;except that the payload is not included &lt;/del&gt;in &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the response&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The result of a &lt;/del&gt;HEAD &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;request may be able to be cached&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* '''HEAD''' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;ist funktionell äquivalent zu &lt;/ins&gt;GET&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;, außer dass die Nutzlast nicht &lt;/ins&gt;in &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;der Antwort enthalten ist&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Das Ergebnis einer &lt;/ins&gt;HEAD&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Anfrage kann möglicherweise zwischengespeichert werden&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* '''POST''' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;requests that the server accept the payload as a new entity&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;subordinate to the existing entity identified by the &lt;/del&gt;URI. POST &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;places requirements upon session capabilities in the server insofar as it requires persistent connection and flow control capabilities&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* '''POST''' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;fordert an&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;dass der Server die Payload als neue Entität annimmt, die der durch die &lt;/ins&gt;URI &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;identifizierten Entität untergeordnet ist&lt;/ins&gt;. POST &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;stellt Anforderungen an die Sitzungsfunktionen im Server, sofern es dauerhafte Verbindungs- und Ablaufsteuerungsfunktionen erfordert&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* '''PUT''' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;indicates that the payload should be stored on the server under the resource named by the &lt;/del&gt;URI. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;If the named resource already exists&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;then the payload is considered to be a modified version of that resource&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;If the named resource does not exist&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;then it should be created by the server&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* '''PUT''' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;gibt an, dass die Payload auf dem Server unter der vom &lt;/ins&gt;URI &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;angegebenen Ressource gespeichert werden soll&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Wenn die benannte Ressource bereits vorhanden ist&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;wird die Nutzlast als eine geänderte Version dieser Ressource betrachtet&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Wenn die benannte Ressource nicht vorhanden ist&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;sollte sie vom Server erstellt werden&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* '''DELETE''' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;requests that the server delete the resource identified by the &lt;/del&gt;URI.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* '''DELETE''' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; &amp;#160; fordert an, dass der Server die vom &lt;/ins&gt;URI &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;identifizierte Ressource löscht&lt;/ins&gt;. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Other methods &lt;/del&gt;(TRACE, OPTIONS, CONNECT) &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;may be supported&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;but are not fundamental to the principles of &lt;/del&gt;REST. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Use of these methods also implies specific requirements in terms of how the response codes should be used&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Andere Methoden &lt;/ins&gt;(TRACE, OPTIONS, CONNECT) &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;können unterstützt werden&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;sind jedoch nicht grundlegend für die &lt;/ins&gt;REST&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-Prinzipien&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Die Verwendung dieser Methoden erfordert auch spezifische Anforderungen hinsichtlich der Verwendung der Antwortcodes&lt;/ins&gt;. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== REST Inventory Support ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== REST Inventory Support ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Manni</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/index.php?title=REST/de&amp;diff=46158&amp;oldid=prev</id>
		<title>Manni at 19:19, 20 April 2018</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/index.php?title=REST/de&amp;diff=46158&amp;oldid=prev"/>
				<updated>2018-04-20T19:19:46Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 19:19, 20 April 2018&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 368:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 368:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Both PUT and POST allow any assets upon which the inventory catalog depends, to be included in-line with the XML catalog data.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Both PUT and POST allow any assets upon which the inventory catalog depends, to be included in-line with the XML catalog data.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Category:German Translations]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Manni</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/index.php?title=REST/de&amp;diff=46157&amp;oldid=prev</id>
		<title>Manni: Created page with &quot;__NOTOC__ {{Quicklinks}} &lt;br /&gt; {{warning|These interfaces are not currently functional in OpenSimulator as they were not used or maintained after the initial work.}}  The fol...&quot;</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/index.php?title=REST/de&amp;diff=46157&amp;oldid=prev"/>
				<updated>2018-04-20T19:17:58Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;__NOTOC__ {{Quicklinks}} &amp;lt;br /&amp;gt; {{warning|These interfaces are not currently functional in OpenSimulator as they were not used or maintained after the initial work.}}  The fol...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Quicklinks}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{{warning|These interfaces are not currently functional in OpenSimulator as they were not used or maintained after the initial work.}}&lt;br /&gt;
&lt;br /&gt;
The following is taken from Alan M Webb's ''OpenSim REST Support'' Draft document dated 8/18/08. The information here and specification are works in progress but provide the basis for useful OpenSimulator integrations including content input and retrieval without direct DB access. --[[User:MoHax|MoHax]] 00:10, 10 October 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
There are a number of REST interfaces implemented within OpenSimulator. This document describes the work done to support specific interactions required in support of external application integration. XML is used to encode the payloads associated with these requests. The specific XML used is documented as an appendix, this is an interim specification.&lt;br /&gt;
&lt;br /&gt;
== What is REST? ==&lt;br /&gt;
&lt;br /&gt;
The notion of Representational State Transfer (REST) was introduced by Roy Fielding in his doctoral dissertation in 2000. It is essentially an architectural concept rather than a protocol, and this has led to a variety of implementations, all of which might claim to be compliant REST implementations.&lt;br /&gt;
&lt;br /&gt;
A REST interface is built upon the HTTP protocol, making use of the four principle methods defined therein: GET, PUT, POST, and DELETE. A fifth method HEAD is also supported, but that is really just a semantic variation of GET. The TRACE and OPTIONS methods have a less fundamental role. No other protocol is involved.&lt;br /&gt;
&lt;br /&gt;
Note that REST does not specify the nature of the payload either sent or received. The interface associated with this document uses XML meta-data to manage an arbitrary payload. The need for a schema document to give form to this XML will be dealt with as a separate discussion.&lt;br /&gt;
&lt;br /&gt;
Of particular significance is the understood meaning of the methods themselves, which is (and must be) as defined by the HTTP specification:&lt;br /&gt;
&lt;br /&gt;
* '''GET''' retrieves the information identified by the associated URI and returns it to the requester. GET is idempotent. If the URI identifies a process, then it is the output of that process which is returned, and not the source text of that process. GET is conditional when the headers include any of the If headers. GET is partial if a range related header is included. The results of GET may be able to be cached.&lt;br /&gt;
&lt;br /&gt;
* '''HEAD''' is functionally equivalent to GET except that the payload is not included in the response. The result of a HEAD request may be able to be cached.&lt;br /&gt;
&lt;br /&gt;
* '''POST''' requests that the server accept the payload as a new entity, subordinate to the existing entity identified by the URI. POST places requirements upon session capabilities in the server insofar as it requires persistent connection and flow control capabilities.&lt;br /&gt;
&lt;br /&gt;
* '''PUT''' indicates that the payload should be stored on the server under the resource named by the URI. If the named resource already exists, then the payload is considered to be a modified version of that resource. If the named resource does not exist, then it should be created by the server.&lt;br /&gt;
&lt;br /&gt;
* '''DELETE''' requests that the server delete the resource identified by the URI.&lt;br /&gt;
&lt;br /&gt;
Other methods (TRACE, OPTIONS, CONNECT) may be supported, but are not fundamental to the principles of REST. Use of these methods also implies specific requirements in terms of how the response codes should be used.&lt;br /&gt;
&lt;br /&gt;
== REST Inventory Support ==&lt;br /&gt;
&lt;br /&gt;
The REST support in OpenSimulator is separated into a number of functional components, all of which live in the OpenSimulator/ApplicationPlugins/Rest hierarchy.&lt;br /&gt;
&lt;br /&gt;
# Plug-in management. E.g. RestPlugin.cs and Inventory/RestHandler.cs&lt;br /&gt;
# Service management: Inventory/RestHandler.cs&lt;br /&gt;
# REST implementation: RequestData.cs, Rest.cs&lt;br /&gt;
# Service implementations: Inventory/RestInventoryServices.cs, Inventory/RestAssetServices.cs, etc.&lt;br /&gt;
&lt;br /&gt;
This separation serves a number of purposes:&lt;br /&gt;
&lt;br /&gt;
* it limits the sensitivity of each component to implementation changes in the others&lt;br /&gt;
* it simplifies the task of service implementation by “hiding” infrastructure&lt;br /&gt;
* it helps make services consistent by sharing a single implementation of REST related tasks&lt;br /&gt;
&lt;br /&gt;
The design intention is that each subdirectory in the REST hierarchy, I.e. Inventory, corresponds to a distinct REST handler assembly consisting of service management and one or more service implementations. The Inventory directory is one example of such an assembly.&lt;br /&gt;
&lt;br /&gt;
=== Configuration Parameters ===&lt;br /&gt;
&lt;br /&gt;
In order for the REST handlers to be loaded and effective, statements must be added to the OpenSimulator.ini file. OpenSimulator reads the initialization file during start-up. This file is partitioned into various functional domains, e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Startup]&lt;br /&gt;
gridmode = false&lt;br /&gt;
physics = basicphysics&lt;br /&gt;
&lt;br /&gt;
[RestPlugins]&lt;br /&gt;
enabled = false&lt;br /&gt;
&lt;br /&gt;
[RestHandler]&lt;br /&gt;
enabled = false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;RestPlugins&amp;lt;/tt&amp;gt; partition affects REST handlers in general and supports the following entries:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[RestPlugins]&lt;br /&gt;
enabled = true|false || false&lt;br /&gt;
god_key = &amp;lt;string&amp;gt; || “”&lt;br /&gt;
prefix  = &amp;lt;string&amp;gt;   || “/admin”&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Only &amp;lt;tt&amp;gt;enabled=true&amp;lt;/tt&amp;gt; is necessary to enable REST processing. &lt;br /&gt;
&lt;br /&gt;
Additionally, REST inventory processing currently requires that the following partition be defined:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[RestHandler]&lt;br /&gt;
enabled = true|false || false&lt;br /&gt;
authenticate = true|false || true&lt;br /&gt;
extended-escape = true|false || true&lt;br /&gt;
realm = &amp;lt;string&amp;gt; || “OpenSim REST”&lt;br /&gt;
dump-asset = true|false || false&lt;br /&gt;
dump-line-size = int%8 || 32&lt;br /&gt;
path-fill = true|false || false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The partition name corresponds to the &amp;lt;tt&amp;gt;ConfigName&amp;lt;/tt&amp;gt; value specified in the plug-in subclass, I.e. RestHandler.cs.&lt;br /&gt;
&lt;br /&gt;
Again, only the enabled=true entry must be provided to enable the inventory handler; all other defaults are acceptable for normal operation. The meanings of these values will become apparent in the rest of the document.&lt;br /&gt;
&lt;br /&gt;
When the server starts, the REST handler will publish several messages indicating which configuration values are in effect.&lt;br /&gt;
&lt;br /&gt;
=== Effective URI ===&lt;br /&gt;
&lt;br /&gt;
From a REST perspective, the path component of the URI is viewed as a resource identification, the precise significance of which depends upon the HTTP method being used. There are subtleties here, in some cases a prefix of the path may be viewed as a functional qualification of the authority, with the remainder of the URI being a resource identification within the domain of that authority. In this document, the notion of a service corresponds to the functional qualification mechanism just described.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;prefix&amp;lt;/tt&amp;gt; value in the configuration file is used to construct the server's base prefix for REST services, as illustrated in the description of the inventory services prefix shown below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://&amp;lt;host&amp;gt;:&amp;lt;port&amp;gt;/admin/inventory&lt;br /&gt;
                     ^^^^^&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this URI &amp;lt;tt&amp;gt;/admin&amp;lt;/tt&amp;gt; is the base prefix, and &amp;lt;tt&amp;gt;/inventory&amp;lt;/tt&amp;gt; is a prefix extension that identifies the inventory service handler.&lt;br /&gt;
&lt;br /&gt;
All requests that have an &amp;lt;tt&amp;gt;/admin/inventory&amp;lt;/tt&amp;gt; prefix will be passed to the inventory handler. The prefix must be followed by the name of the avatar that owns the inventory in question. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://localhost:9000/admin/inventory/Alan Webb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assuming the GET method, then this will return Alan Webb's inventory catalog, as XML data in the response payload, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Inventory&amp;gt;&lt;br /&gt;
&amp;lt;Folder name = “My Inventory” uuid=”11111111-...-111111111111” ....&lt;br /&gt;
        &amp;lt;Folder name=”Objects” uuid=....&lt;br /&gt;
        ....&lt;br /&gt;
        &amp;lt;/Folder&amp;gt;&lt;br /&gt;
    &amp;lt;/Folder&amp;gt;&lt;br /&gt;
&amp;lt;/Inventory&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case &amp;lt;tt&amp;gt;/admin/inventory&amp;lt;/tt&amp;gt; identiifes the service, and &amp;lt;tt&amp;gt;/Alan Webb&amp;lt;/tt&amp;gt; is the resource specification component of the path.&lt;br /&gt;
&lt;br /&gt;
== Implementation Overview ==&lt;br /&gt;
&lt;br /&gt;
The REST implementation being described is manifest in a subset of the files contained in the &amp;lt;tt&amp;gt;ApplicationPlugins/Rest&amp;lt;/tt&amp;gt; file hierarchy. It is logically partitioned into three domains:&lt;br /&gt;
&lt;br /&gt;
* Plugin and configuration management&lt;br /&gt;
* REST implementation services&lt;br /&gt;
* REST service providers&lt;br /&gt;
&lt;br /&gt;
The objective here being to separate functionality so that the task of the service provider is made as straightforward as possible while ensuring that all services implemented using the interface are consistent in both approach and behavior.&lt;br /&gt;
&lt;br /&gt;
[[Image:RESTOverallDataFlowModel.jpg|center|thumb|400px|Illustration 1: Overall Data Flow Model]]&lt;br /&gt;
&lt;br /&gt;
As shown in Illustration 1: Overall Data Flow Model all requests originate, and are eventually returned to, the OpenSimulator HTTP server. The handler is isolated from this implementation by the &amp;lt;tt&amp;gt;IHttpAgentHandler&amp;lt;/tt&amp;gt; interface and the OSHTTP data-types. After matching, the request is passed to the appropriate handler; this relationship is defined by the &amp;lt;tt&amp;gt;IRest&amp;lt;/tt&amp;gt; interface and the &amp;lt;tt&amp;gt;RequestData&amp;lt;/tt&amp;gt; data-type.&lt;br /&gt;
&lt;br /&gt;
=== Changes to BaseHttpServer ===&lt;br /&gt;
&lt;br /&gt;
The existing OpenSimulator HTTP server class was modified to support plug-in modules that conform to the &amp;lt;tt&amp;gt;IHttpAgentHandler&amp;lt;/tt&amp;gt; interface. Three new subroutines were added: &amp;lt;tt&amp;gt;AddHttpAgentHandler&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;RemoveHttpAgentHandler&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;TryHttpAgentHandler&amp;lt;/tt&amp;gt;; this is consistent with the way in which existing handlers are managed.&lt;br /&gt;
&lt;br /&gt;
Additionally, the &amp;lt;tt&amp;gt;HandleRequest&amp;lt;/tt&amp;gt; method was extended to include support for the &amp;lt;tt&amp;gt;IHttpAgentHandler&amp;lt;/tt&amp;gt; interface.&lt;br /&gt;
&lt;br /&gt;
The processing of existing handlers is not affected by the new support.&lt;br /&gt;
&lt;br /&gt;
=== Plugin and Configuration Management ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;IHttpAgentHandler&amp;lt;/tt&amp;gt; describes the interface between OpenSimulator's base HTTP server and the REST implementation, a plug-in must implement this interface. Any class that exports this interface, and that registers its handlers using the appropriate (not defined by an interface) methods in the base HTTP server can act as a handler. Note that while the usage described here is intended to support REST, the interface itself is agnostic and may be used as the basis for any HTTP request handler.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;'''RestPlugin.cs'''&amp;lt;/tt&amp;gt; provides a basic agent-handling superclass. An implementation of this class represents a handler from the point of view of the base HTTP server. This class implements the &amp;lt;tt&amp;gt;IHttpAgentHandler&amp;lt;/tt&amp;gt; interface. A given implementation class need only be differentiated from the others in terms of the agent name it uses when it registers. At present, a duplicate agent (based upon supplied agent name) will not be registered; how such a failure is handled depends upon the implementation class. Aside from the name used, a given handler should be differentiated in terms of the set of request patterns that it will match; overlap is undesirable as the first match will win, and at present the order in which OpenSimulator loads modules is non-deterministic. The &amp;lt;tt&amp;gt;RestHandler&amp;lt;/tt&amp;gt; class in the Inventory sub-directory is an example of an implementation class for ''RestPlugin.cs''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;'''Inventory/RestHandler.cs'''&amp;lt;/tt&amp;gt; implements the plug-in interface described above, and also implements a local model of integrating a set of services within a single handler instance. It does this by scanning the classes included in the assembly for those that implement the &amp;lt;tt&amp;gt;IRest&amp;lt;/tt&amp;gt; interface; each such class is then initialized. This provides implementation independence from a development standpoint (adding a new service is as simple as adding a single class) whilst avoiding unnecessary overt modularization in OpenSimulator. This class also takes care of global configuration and initialization of the basic REST environment, i.e. It sets basic references for the OpenSimulator communications manager, user services, inventory services, and asset management.&lt;br /&gt;
&lt;br /&gt;
For performance reasons, and as an obligation to the &amp;lt;tt&amp;gt;IHttpAgentHandler&amp;lt;/tt&amp;gt; definition, this class also implements the Match function, using pattern information registered by the individual services when they were initialized1.&lt;br /&gt;
&lt;br /&gt;
This class contains no REST specific, or service specific functionality beyond some basic initialization. This class can be used in multiple assemblies without change.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;'''Rest.cs'''&amp;lt;/tt&amp;gt; provides both state and functionality in support of the REST implementation. Most of the state is static and constant, a small set of static values are initialized by the &amp;lt;tt&amp;gt;RestHandler&amp;lt;/tt&amp;gt; when the plug-in is loaded. This class will only change as the REST implementation evolves and becomes more complete. I''t must not contain any service sensitive elements.'' This class may be sub-classed by a given assembly to provide global additions required by a specific set of services.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;'''RequestData.cs'''&amp;lt;/tt&amp;gt; serves as a carrier for the state associated with a request. It may be sub-classed by a given service provider in order to add service specific state and functionality, for example the inventory services currently utilize an XML extension to handle inventory specific payload interpretation and generation.&lt;br /&gt;
&lt;br /&gt;
The remaining classes in the Inventory directory provide different classes of service.&lt;br /&gt;
&lt;br /&gt;
=== Adding A New REST Service To An Existing Handler ===&lt;br /&gt;
&lt;br /&gt;
The process for adding a new service is straightforward. The file &amp;lt;tt&amp;gt;RestTestServices.cs&amp;lt;/tt&amp;gt; serves as an example1 of what a new services class must minimally include. Key points to note are:&lt;br /&gt;
&lt;br /&gt;
# Each service class should have an associated value for &amp;lt;tt&amp;gt;qPrefix&amp;lt;/tt&amp;gt;. This should be unique for each service, as it represents the relative extension of the URI that will be matched by this service. The value supplied here may be absolute, but this is discouraged. The constructor will automatically update a relative value to reflect the absolute prefix set globally during initialization.&lt;br /&gt;
# In the case of test services the constructor loads a set of classes from a sub-directory, each of which represents a specific service implementation. For example, these may be method-related, or based upon other values contained in the supplied URI.&lt;br /&gt;
# The services constructor must register itself with the &amp;lt;tt&amp;gt;RestHandler&amp;lt;/tt&amp;gt;. It provides three values at registration time: a reference to the service method, the URI prefix that this service will match, and a reference to an &amp;lt;tt&amp;gt;RequestData&amp;lt;/tt&amp;gt; allocation method that will return an appropriately sub-classed instance of the &amp;lt;tt&amp;gt;RequestData&amp;lt;/tt&amp;gt; class.&lt;br /&gt;
# Implementation of the service and allocation methods described above must be provided.&lt;br /&gt;
&lt;br /&gt;
Other methods definitions are simply part of the overall infrastructure and would be unique to a given service implementation.&lt;br /&gt;
&lt;br /&gt;
''Note that a given services class may implement zero or more services, according to its intended function. A class providing shared functionality to other services may be loaded but not register any actual handling methods. Similarly, a single services class could register multiple handling methods.''&lt;br /&gt;
&lt;br /&gt;
== REST Implementation Classes ==&lt;br /&gt;
&lt;br /&gt;
This section provides additional documentation of the state and services provided by &amp;lt;tt&amp;gt;Rest.cs&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;RequestData.cs&amp;lt;/tt&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
=== Rest.cs ===&lt;br /&gt;
&lt;br /&gt;
The eponymous class provides a collection of ''request independent'' services and state definitions. Any functions directly dependent upon the HTTP request and response elements are provided in &amp;lt;tt&amp;gt;RequestData.cs&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== State ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;Log&amp;lt;/tt&amp;gt; declaration provides local access to the &amp;lt;tt&amp;gt;log4net&amp;lt;/tt&amp;gt; facility. Though apparently complex it simply resolves to a static, read-only reference that can be used to pass messages to the logging facility.&lt;br /&gt;
&lt;br /&gt;
The value of &amp;lt;tt&amp;gt;DEBUG&amp;lt;/tt&amp;gt; reflects whether or not debug messages have been enabled in the OpenSimulator log. If they have, then &amp;lt;tt&amp;gt;DEBUG&amp;lt;/tt&amp;gt; will be enabled, if not, then they will not. Being a static declaration it is anticipated that the JIT compiler will be able to make efficient code generation assumptions. This is only of real significance where some substantial operation is performed solely in support of debugging.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;Plugin&amp;lt;/tt&amp;gt; reference is set by &amp;lt;tt&amp;gt;RestHandler&amp;lt;/tt&amp;gt; during initialization. It eliminates the need for a services class to have direct awareness of how it was activated. For example, this reference is used to locate the &amp;lt;tt&amp;gt;AddPathHandler&amp;lt;/tt&amp;gt; method needed to register its interface.&lt;br /&gt;
&lt;br /&gt;
The main reference is set by the &amp;lt;tt&amp;gt;RestHandler&amp;lt;/tt&amp;gt; during initialization. Its value is a reference to the simulator's base class. It is provided to the plug-in interface and is stored for that reason. It is not currently used except by &amp;lt;tt&amp;gt;RestHandler&amp;lt;/tt&amp;gt; to locate the communications manager during initialization.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Comms&amp;lt;/tt&amp;gt; provides a globally accessible reference to the simulator's communications manager. It is initialized by &amp;lt;tt&amp;gt;RestHandler&amp;lt;/tt&amp;gt; during initialization and is currently only used by &amp;lt;tt&amp;gt;RestHandler&amp;lt;/tt&amp;gt; to locate other, commonly needed, simulator services.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;InventoryServices&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;UserServices&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;AssetServices&amp;lt;/tt&amp;gt; are references to the corresponding simulator service interfaces. This list may grow as common service requirements expand.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Prefix&amp;lt;/tt&amp;gt; is the common URI prefix associated with all handlers within a given assembly. In the case of inventory services it is obtained from the global REST configuration. It is currently /admin. This is a configurable attribute. Typical this should be set to whatever is considered to be the standard prefix for REST services in a given URI, it will be combined with scheme and authority information to construct a valid URL.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Config&amp;lt;/tt&amp;gt; is a saved reference to the configuration file used by this assembly. The configuration partition is identified by the &amp;lt;tt&amp;gt;ConfigName&amp;lt;/tt&amp;gt; string supplied by the &amp;lt;tt&amp;gt;RestHandler&amp;lt;/tt&amp;gt; implementation. This is currently only used by the &amp;lt;tt&amp;gt;RestHandler&amp;lt;/tt&amp;gt;, but it could be used by a service implementation to access attributes unique to the service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;GodKey&amp;lt;/tt&amp;gt; is a string obtained from the configuration file which contains the password for the God user. This user has unfettered access to all administrative functions. This is a temporary mechanism and will eventually be replaced by something more secure. This is a configurable attribute.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Authenticate&amp;lt;/tt&amp;gt; indicates whether or not user authentication is required by this handler. This is a configurable attribute, true by default.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Secure&amp;lt;/tt&amp;gt; indicates whether or not the HTTP session should be secured. Secure sessions are currently not available to OpenSimulator. This is a configurable attribute, true by default.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;ExtendedEscape&amp;lt;/tt&amp;gt; controls whether or not the URI is processed for parsing extensions such as “+” in place of spaces. This is a configurable attribute, true by default.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;DumpAsset&amp;lt;/tt&amp;gt; controls whether or not the content of an incoming asset should be dumped to the trace file after decoding has completed. This is only intended to be used when there is some indication of a problem with the decoding process. It may produce a significant amount of trace output depending upon the quantity of asset data being uploaded. This is configurable and is normally false.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Fill&amp;lt;/tt&amp;gt; controls whether or not the server will automatically generate intermediate folder names when handling a POST request; it is not currently considered appropriate for PUT. This is not presently implemented.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;FlushEnabled&amp;lt;/tt&amp;gt; indicates that the server will completely flush an inbound data stream before responding. This accommodates clients that can not handle the case where a socket error is generated as a result of an early termination of the inbound data stream (due to an authentication failure for example). This mechanism is vulnerable to DOS attacks and can be selectively enabled/disabled.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Realm&amp;lt;/tt&amp;gt; is a string that may be used to distinguish the authentication realm associated with the handler, in place of the URI prefix. This corresponds directly to the realm token included in the WWW-Authenticate response header. This is a configurable option, and is set to 'OpenSim REST' by default. Clients may use this value to determine if additional authentication is necessary, or to select appropriate cached credentials.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;DumpLineSize&amp;lt;/tt&amp;gt; indicates the line length to use for any data dumps (e.g. &amp;lt;tt&amp;gt;DumpAsset&amp;lt;/tt&amp;gt;) during runtime. The default is 132. This is a configurable option.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;statusHead&amp;lt;/tt&amp;gt; contains the standard HTML header used for reporting request status. Similarly, &amp;lt;tt&amp;gt;statusTail&amp;lt;/tt&amp;gt; is used to provide a standard suffix. These are both used by the standard status reporting mechanisms.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;HttpStatusDesc&amp;lt;/tt&amp;gt; is an array which, when indexed by an appropriate HTTP status code, will return a corresponding status description.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;CreationDate&amp;lt;/tt&amp;gt; (property) provides a single consistent reference for creation data value needed when introducing new items into the inventory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;MsgId&amp;lt;/tt&amp;gt; (property) provides a consistent message prefix for log messages generated by the handler. Although static, the value is thread specific, so it is actually unique per request.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;RequestId&amp;lt;/tt&amp;gt; (property) provides a unique, monotonically incrementing request counter for processed requests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Encoding&amp;lt;/tt&amp;gt; provides a standard encoding reference (UTF8) for all data handled by the handler.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Version&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Name&amp;lt;/tt&amp;gt; are intended to uniquely identify the REST implementation represented by this particular class. Version information should be updated if any significant changes to the REST interface are implemented. This is not currently exploited, but should be. We should have an extended header that indicates the REST version that the client is expecting, and the Match process should be sensitive to this. In this way we can provide concurrent support for multiple REST versions.&lt;br /&gt;
&lt;br /&gt;
The extensive list of constant values are all held to be self-explanatory and should be used wheresoever the value they represent is required in a service implementation. This ensures consistency between the REST implementation and the REST service implementations.&lt;br /&gt;
&lt;br /&gt;
==== Functions ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;StringToBase64&amp;lt;/tt&amp;gt; provides a standard Base64 encoding mechanism for service implementations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Base64ToString&amp;lt;/tt&amp;gt; provides a standard Base64 decoding mechanism for service implementations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Hex2Int&amp;lt;/tt&amp;gt; provides a standard mechanism for converting a hexadecimal string of arbitrary length into an integer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Int2hex8&amp;lt;/tt&amp;gt; converts an integer into an 8 character hexadecimal number. This is not currently used, and as such should not be trusted.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;NonceGenerator&amp;lt;/tt&amp;gt; is a simple nonce producer that ensures uniqueness by simply converting a newly generated UUID into a Base64 string. This function is called each time the user is called upon to authenticate, which is not necessarily that often, provided the client caches credentials based upon realm.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Dump&amp;lt;/tt&amp;gt; provides a general purpose facility for generating an interpreted hexadecimal data dump to the log file. It is currently used by the DumpAsset debug facility. But it may be used by anybody requiring such data dumping services.&lt;br /&gt;
&lt;br /&gt;
=== RequestException ===&lt;br /&gt;
&lt;br /&gt;
This class provides an extended exception that can be distinguished from regular, system generated, exceptions. A &amp;lt;tt&amp;gt;RequestException&amp;lt;/tt&amp;gt; does not indicate a programming failure, rather it indicates that the received request could not be validly processed, for example, the URI was invalid. This exception should only be used in those cases where request processing is to be immediately terminated in conjunction with normal response processing. Principally it allows the handler to differentiate between a failure in processing, which should be logged, and a normal response to an invalid request, which should not.&lt;br /&gt;
&lt;br /&gt;
=== RequestData.cs ===&lt;br /&gt;
&lt;br /&gt;
This file, and its eponymous class provides consistent support for request specific REST processing. When the &amp;lt;tt&amp;gt;RestHandler&amp;lt;/tt&amp;gt; has successfully matched a handler to a request, the registered allocate method for that service interface is called to allocate an instance of this class either directly, or as a super class of some service specific extension. This description deals only with the base implementation.&lt;br /&gt;
&lt;br /&gt;
With a single instance of a service class per handler, it is necessary to encapsulate request/response specific data in this way. Those functions that operate over that data are included here for convenience and represent part of the previously mentioned REST implementation encapsulation.&lt;br /&gt;
&lt;br /&gt;
==== Members ====&lt;br /&gt;
&lt;br /&gt;
When an instance of this class is created, the constructor always does the following:&lt;br /&gt;
&lt;br /&gt;
# The parameters are not validated. Their validity is considered to be a precondition and as such the natural exception mechanism is an efficient and effective way to deal with invalid argument values.&lt;br /&gt;
# The supplied request and response object references are cached, as is the supplied request prefix.&lt;br /&gt;
# The effective encoding is obtained from the supplied request if possible, or the Rest default (UTF8) is applied.&lt;br /&gt;
# A lower case copy of the request method is stored.&lt;br /&gt;
# &amp;lt;tt&amp;gt;InitUrl&amp;lt;/tt&amp;gt; is called to decompose the supplied URI into its basic components: query, path, host name, and port.&lt;br /&gt;
# &amp;lt;tt&amp;gt;InitParameters&amp;lt;/tt&amp;gt; is called to create an array of strings, each of which represents a separated portion of whatever URI remains after the handler's selection prefix is removed. This list may be empty.&lt;br /&gt;
&lt;br /&gt;
In the interests of laziness, constructor processing is kept to a minimum.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;IsAuthenticated&amp;lt;/tt&amp;gt; property checks to see if the user is currently authenticated, and if not, then invokes that authentication mechanism. This allows a service request handler so simply test this boolean and reject the request if the result is false. This is an example of a failure that should not normally be logged, as the client is expected to respond to the challenge with an appropriate set of credentials.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;PathNodes&amp;lt;/tt&amp;gt; property is an array that contains a normalized list of elements in the absolute path provided in the URI. It does not differentiate the elements.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;Parameters&amp;lt;/tt&amp;gt; property is an array that contains only those URI path elements that are not a part of the service selection prefix (i.e. &amp;lt;tt&amp;gt;/admin/inventory&amp;lt;/tt&amp;gt;). This simplifies service processing by providing a prefix-independent base for request parameter indeces.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Complete&amp;lt;/tt&amp;gt; allows a service provider to indicate the manner in which a request has completed. Called with no arguments, this corresponds to a status code of 200 indicating a normal completion. In many cases the service provider must necessarily indicate a more specific code. The message associated with this call may be arbitrarily complex, it is used, as-is, as the message body in the response.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Redirect&amp;lt;/tt&amp;gt; allows a service provider to indicate that the requester should be redirected to an alternative URL. Redirection may be permanent or temporary as indicated by the boolean argument.&lt;br /&gt;
&lt;br /&gt;
Variations on &amp;lt;tt&amp;gt;Fail&amp;lt;/tt&amp;gt; allow a service to abandon request processing. This call constructs an appropriate HTTP failure response, including any specified message body, generates the response, adds request information to an instance of &amp;lt;tt&amp;gt;RestException&amp;lt;/tt&amp;gt; and finally throws the exception. It is important that a service provider allow &amp;lt;tt&amp;gt;RestException&amp;lt;/tt&amp;gt; events to pass through transparently, (i.e. re-throw any that are inadvertently trapped).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Reject&amp;lt;/tt&amp;gt; encapsulates whatever processing is appropriate for requests that attempted processing that is not implemented.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Respond&amp;lt;/tt&amp;gt; allows a service provider to generate a response and complete processing with respect to the current HTTP request and response. This call is mandatory for any request that is considered to have been processed successfully.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;AddHeader&amp;lt;/tt&amp;gt; allows a service provider to add a header to the set of response headers that will be included when the response is finally generated. The Rest constants should be used when specifying the header name. The header value is treated as an arbitrary string.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;RemoveHeader&amp;lt;/tt&amp;gt; allows a service provider to remove a header that was previously added to the response header set.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;DumpHeaders&amp;lt;/tt&amp;gt; causes a list of the currently effective headers to be sent to the log. This is a DEBUG option.&lt;br /&gt;
&lt;br /&gt;
== RestInventoryServices ==&lt;br /&gt;
This file, and the classes it contains, provide a monolithic implementation of all of the services provided in support of inventory processing. If required, authentication is established before any processing of inventory data. The following abnormal completion codes may be returned:&lt;br /&gt;
&lt;br /&gt;
* 301 indicating that a permanently applicable alternative URI for a specified resource has been provided.&lt;br /&gt;
* 400 indicating a bad request. Information about the nature of the request error is included in the status information returned to the client. Currently this is textual, but when a proper schema document for the interface is established, a more quantitative status will be returned.&lt;br /&gt;
* 401 indicating that the client must authenticate.&lt;br /&gt;
* 409 indicating that an ambiguous or conflicting request was received.&lt;br /&gt;
&lt;br /&gt;
=== Inventory Resource Identification ===&lt;br /&gt;
&lt;br /&gt;
An avatar's inventory is a catalog of the assets 'owned' by the avatar; the inventory contains only of meta-data and depends upon the asset data base for whatever actual data represents the perceived content. References to inventory in this document normally refer to the meta-data rather than the content. An inventory consists of two types of element: ''folders'' and ''items''. In both cases, a given element is uniquely identified by an assigned UUID. An associated name is also provided for human convenience, but such names are not required to be unique and are insufficient to ensure an exact identification. The URI used in inventory related requests allows either UUID or name to specified for each element in a resource identification path, ''if any ambiguity arises then the request will be failed''.&lt;br /&gt;
&lt;br /&gt;
The avatar's inventory can contain a private catalog, and one or more shared, or public, catalogs. Currently only the private catalog is processed. When support for the shared catalogs is introduced it will do so by adding by prefixing any path as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/admin/inventory/shared/[&amp;lt;libname&amp;gt;]/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This allows all global inventory, or a specific library to be referenced.&lt;br /&gt;
For all requests, specifying an avatar name implies the private inventory.&lt;br /&gt;
In all cases, if additional path information is provided, then the root directory name may be inferred (but accepted if specified explicitly). So&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/admin/inventory/Alan Webb/My Inventory/Clothing&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/admin/inventory/Alan Webb/Clothing&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
are semantically equivalent. This is a convenient and harmless special case. Note that the folder names are case-sensitive. Where no additional path information is provided, as in&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/admin/inventory/Alan Webb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then the root directory may still be inferred for GET and POST, but can not be allowed for PUT. PUT requires the URI to identify the element that is being updated, so inference in this case could be extremely damaging. Explicit specification of the root inventory name is therefore required for all PUT requests. Given that this is an interface normally used only by programmed clients, the additional verbosity is not expected to be an issue. If this proves to be contentious, then the only viable approach would be to drop the inference altogether.&lt;br /&gt;
&lt;br /&gt;
=== Supported Services ===&lt;br /&gt;
&lt;br /&gt;
==== GET ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;GET&amp;lt;/tt&amp;gt; allows the client to retrieve all, or some sub-tree of, the inventory associated with a specified avatar's inventory. Inventory information is returned in an XML payload. This request is guaranteed not to affect the state of the avatar's inventory. Possible normal completions are:&lt;br /&gt;
&lt;br /&gt;
* 200 indicating normal completion of the request. The payload will contain an XML representation of the avatar's inventory.&lt;br /&gt;
&lt;br /&gt;
==== PUT ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;PUT&amp;lt;/tt&amp;gt; allows a resource, explicitly nominated in the URI, to be created or replaced. I.e. the URI identifies an instance rather than a context. Possible normal completions are&lt;br /&gt;
&lt;br /&gt;
* 200 if the nominated resource was successfully updated&lt;br /&gt;
* 201 if the nominated resource was successfully created.&lt;br /&gt;
* 204 if no content change (but the resource was recognized and valid)&lt;br /&gt;
&lt;br /&gt;
==== POST ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;POST&amp;lt;/tt&amp;gt; allows a new resource to be created in the context identified by the URI. It follows from this that the resource identified by a POST request should always be a folder. Normal completions are:&lt;br /&gt;
&lt;br /&gt;
* 200 if some portion of the context was modified.&lt;br /&gt;
* 201 if the new data was entirely new.&lt;br /&gt;
&lt;br /&gt;
==== DELETE ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;DELETE&amp;lt;/tt&amp;gt; allows a named resource to be deleted. If the resource is a folder, then the entire sub-tree will be removed. Normal completion codes are:&lt;br /&gt;
&lt;br /&gt;
* 200 if the specified resource was deleted.&lt;br /&gt;
&lt;br /&gt;
Both PUT and POST allow any assets upon which the inventory catalog depends, to be included in-line with the XML catalog data.&lt;/div&gt;</summary>
		<author><name>Manni</name></author>	</entry>

	</feed>