Die Umsetzung der Anwendungslogikschicht

In der gesamten Lösung, ist der einfachste Teil der Umsetzung der Applikations-Logik-Schicht. Es ist trivial und wird durch die folgenden Python-Code dargestellt:

def Strom (req, Cache, urlComponents): req.content_type = configuration.Atom.mimeType conn = MySQLdb.connect (host = configuration.Database.server, user = configuration.Database.user, passwd = configuration.Database.password, db = configuration.Database.db) Cursor = conn.Cursor () Cursor.execute ( "SELECT * from Einträge Sortieren nach post_date desc") row = Cursor.fetchone () generateHeader (req, row) generateEntry (req, row) row = cursor.fetchmany (configuration.Blog.entryCount - 1) für die Einreise in Zeile: generateEntry (req, entry) generateFooter (req)

Seien Sie nicht zu durch Einfachheit des Codes zu begeistern, da der Code eine Infrastruktur von Methoden, die aufgerufen sind, zur Verfügung stellt. Die Methode zeigt, was AWeb Dienst wird zum größten Teil, die Daten zu akzeptieren, zu verarbeiten ist, und es bestehen. Sie werden in Zeiten zu realisieren Algorithmen, die irgendeine Art von Berechnung auszuführen. Bei der Verarbeitung sind die Business-Regeln angewandt diesem Prozess der gesendeten und empfangenen Daten. Für den Umfang dieser Lösung werden die Daten geschoben und mit sehr wenig gezogen zwischen der Verarbeitung.

Ein externer Prozess steuert die Anwendungslogik, die im Falle der Lösung eines Browsers. Die Anwendungslogik wird durch eine Reihe von Anfragen ausgelöst, die definiert werden mit URLs. Es gibt andere Möglichkeiten der Erstellung von Web-Services mit anderen Technologien, aber dieser Artikel konzentriert sich auf mit Representational State Transfer (REST). Mit REST-URLs beinhaltet den Entwurf und die Verwendung des HTTP-Protokolls. Aus der Perspektive der Ajax-Client ist eine perfekte Protokoll. Let's start the Application Design-Prozess durch Korrelation, was die Probe Quellcode referenziert wird. Der Name der Funktion in der Probe Quellcode ist Strom, und die letzte nBlog-Einträge zurückgegeben. Wenn Sie ein Blog-Leser oder eine Ajax-Client, wollen Sie das aktuelle Blog-Einträge sehen also die einfachste Lösung ist die URL zu verknüpfen, um die Funktion http://myserver.com/ Strom.

Ignorieren die Richtigkeit der URL jetzt (I zu erörtern, die im nächsten Abschnitt), eine berechtigte Frage ist, wie der Server wissen, Querverweis die URL mit einer bestimmten Funktionalität? Standardmäßig wird, wenn ein HTTP-Server, der URL-Prozessor führt , wird die URL in der Datei abgebildet. Wenn der Antrag wurde [http://myserver.com] / dir / file.html, dann den HTTP-Server versucht, die Datei zu finden [base-Verzeichnis] / dir / file.html. Wenn die Datei gefunden wird, wird die Datei-Endung-Prozessor geladen, was im Fall von. Html zufällig eine statische Datei-Prozessor. (Wenn die Erweiterung ist. Php oder. Aspx, dann die PHP oder ASP.NET-Prozessoren ausgeführt werden, und generieren Inhalte auf der Grundlage der Anweisungen in der Datei.) Von einer REST-Sicht ist dies die falsche URL-Prozessor-Algorithmus. Es ist eine einfache Algorithmus, aber es ist der falsche Algorithmus, zumindest aus der Perspektive von REST. Understanding Why We Want REST Aus der Sicht der Ruhe, der stellvertretend für alle URLs Ressourcen auf der Server-Seite, aber während eine Datei ist eine Ressource, ist es nicht eine Ressource, aus der Sicht der Anwendung. Dies ist ein sehr großer Unterschied, muss verstanden werden: REST-URLs sind anwendungs-spezifischen Ressourcen. Mit einem anwendungs-spezifischen Ressourcen bedeutet, dass Sie Funktionalität auf Basis der Business-Logik, nicht die Technologie ausgesetzt sind. Mit REST, können Sie die Ressource aus der Umsetzung zu trennen, so wie Interface-oder Vertrags-Driven Development. Um die Trennung der Ressource aus der Umsetzung zu illustrieren, betrachten die folgende C #-Code:

Schnittstelle IBase (void Method ();) class Implementation1: IBase (public void Methode () ()) class Implementation2: IBase (public void Methode () ())
  

Die IBase Interface definiert eine Methode und wird von zwei Klassen, Implementation1 und Implementation2 umgesetzt. Dieser Prozess wird genannt Interface-driven development, Weil, wenn der Client verwendet entweder Umsetzung der Client nicht verwenden, sondern die tatsächliche Umsetzung der Schnittstelle von der Umsetzung, wie aus der folgenden Quellcode dargestellt:

Factory-Klasse (public static IBase Instanziieren () (return new Implementation1 ();)) class useit (public void Methode () (obj = IBase Factory.Instantiate (); / / ...))

In dem Beispiel-Quellcode, hat die Factory-Klasse eine statische Methode, Instanziieren, dass eine Instanz von IBase durch die Instanziierung Implementation1 schafft. In der UseIt.Method Klasse, ist ein fall von IBase durch den Aufruf der Methode Factory.Instantiate instanziiert. Die useit Klasse hat keine Ahnung, ob Implementation1 oder Implementation2 instanziiert wird, und verwendet die Schnittstelle im Sinne der IBase, erwartet, dass die Interface-Methoden werden korrekt umgesetzt wird. Bei der Verwendung von dynamischen Sprachen, verwenden Sie Duck Typing, und die definierten Aufträgen führen in die Überlegungen einbezogen Funktionalität .

Let's beziehen Interface-driven development, um URLs und trennen Sie die Ressource aus der Darstellung. Die Ressource ist die Schnittstelle, und die Darstellung ist die Umsetzung. Derzeit direkt an die meisten Web-Technologien miteinander verbinden die Ressource und die Vertretung oder die Verwendung Implementierungen, wie die URLs http://mydomain.com/item.aspx http://mydomain.com/item.jsp und zu veranschaulichen. Der direkte Anbindungen sind. aspx und. jsp Erweiterungen und die richtige Schnittstelle definierte URL hätte http://mydomain.com/item. Ironischerweise alle Web-Technologien Umsetzung der Trennung von Ressourcen von der Vertretung für die Root-URL /, wie dargestellt die folgenden HTTP Gespräch. (Beachten Sie, dass die Konversation, um Erläuterungen zu Zwecken abgekürzt wurde.)

 AnfordernGET / HTTP/1.1 Host: 192.168.1.242:8100 User-Agent: Mozilla/5.0 (compatible; PPC Mac OS X Mach-O; en-US; rv: 1.7.8) Gecko/20050511 ResponseHTTP/1.1 200 OK Server: Apache/2.0.53 (Ubuntu) PHP/4.3.10-10ubuntu4

Die Ausführung Strömung einer REST-URL-Prozessor ist in diesem einfachen, auf die Benutzer-Code zur Ausführung zu bestimmen, zerlegen wir einfach die URL. Basierend auf der Struktur der URL, den entsprechenden Server-Side-Code aufgerufen wird. Wenn der Kunde ruft die URL / blog / Einträge / Strom, ist die Token-URL, Blog-Einträge und aktuell sind. Bei der Blog-Software, erfordert die Python-Handler mindestens drei Stücke von der URL, die in der Python-Aufruf übersetzt [module Namespace]. [Module]. [Funktion]. Die URL-Aufruf aus dem Client wird dann übersetzt blog.enteries.current (). Jede URL, die Stücke nach den ersten drei Stücke sind an die aufgerufene Funktion übergeben fine-tune die erforderlichen Informationen.

Die Herrschaft, die mindestens drei URL Stück ist rein spezifisch auf meine Python-Handler Rahmen. Ihre Rahmen Möglicherweise müssen zwei oder fünf, oder was auch immer Anzahl der URL-Stück ist eine beliebige Anzahl. In dem Beispiel Blog-Software, der verwendete Algorithmus zur Querverweis die URL, um den benutzerdefinierten Code verwendet Konvention über Konfiguration Techniken. Aber es ist nichts falsch mit der Verwendung einer Lookup-Tabelle mit Querverweisen zu bestimmten Teilen der URL mit einem Stück benutzerdefinierte Funktionen. Auch hier, wie Sie Cross-Reference der URL-Stück, um die benutzerdefinierte Funktion ist bis zu Ihnen. Bei der Umsetzung Ihrer eigenen REST-URL-Prozessor, wird die tatsächliche Umsetzung je nach der verwendeten Technologie. Es gibt kein gemeinsames Thema, aber es gibt zwei Wege zur Umsetzung einer REST-URL-Prozessor:

• Finden Sie einen Weg zu assoziieren einer Basis-URL mit einer spezifischen Handler. Zum Beispiel, neige ich dazu, dass sie / Dienstleistungen als Basis für alle meine Web-Services. Der Server muss die Vorstellung, dass, wenn die angeforderte URL beginnt mit / Dienstleistungen, einen bestimmten Handler aufgerufen unterstützen. Die spezifischen Handler aufgerufen wird, die REST-URL-Prozessor, der macht dann den Handler aufrufen.

• Wenn Sie können keine Basis-Handler für ein Basis-URL, dann müssen Sie ein HTTP-Filter zu schreiben. Der Unterschied zwischen einer HTTP-Filter und ein HTTP-Handler ist, dass ein Filter, bevor ein Handler aufgerufen wird. Die Idee des HTTP-Filtern ist es, User-Code ermöglichen, bestimmte gemeinsame Schritte auf alle Anforderungen erfüllen.

Ein typisches Beispiel ist die Authentifizierung. Die Verwendung eines HTTP-Filter, haben Sie die Möglichkeit, festzulegen, welche Prozedur aufgerufen wird. Im Rahmen der REST-URL-Prozessor, würde der Prozessor als letzten Schritt, nachdem alle anderen Filter eingebettet werden ausgeführt haben. Es ist der letzte Schritt, da Sie die Schritte wie zB die Authentifizierung auf die angeforderte URL ausführen wollen, und nicht die Durchführung URL umgeleitet. Bei der Umsetzung Ihrer REST-URL-Prozessor, müssen Sie bedenken, dass nur die URL bestimmt, welche Funktion aufgerufen wird. Sie dürfen ein HTTP-Cookie als Teil Ihrer Entscheidung. Wie später erläutert in diesem Artikel mit HTTP-Cookies zu entscheiden, welche Funktionen auszuführen ist sehr schlechtes Design. Für den Geltungsbereich dieser Lösung ist das alles, was ich zu diskutieren über die REST-URL-Prozessor.

Die Umsetzung der URLsAngenommen, Sie haben Ihren eigenen REST-URL-Prozessor, der nächste Schritt umgesetzt wird, um die URLs zu definieren ist. In diesem Abschnitt beschreibe ich die URLs in der Blog-Anwendung verwendet werden und erklären, sie in einer Weise, daß die Erklärung in allgemeiner Art verwendet werden können. Für alle meine URLs, gibt es mindestens drei Stück, und auf den Rest URL-Prozessor Ich verwende glaube nicht, müssen Sie die gleiche Anzahl der Stücke verwenden, speziell ist. Die beiden Basis-URLs sind / blog und / Dienstleistungen / blog. Sie müssen diese beiden Basis-URLs, da Sie dienen zwei verschiedene Arten von Inhalten: statische HTML-Dateien und Web-Service-Inhalte. Theoretisch könnten Sie nur eine Basis-URL und den Web Service generieren alles benutzen, aber ich bin dabei, weil sie die Umsetzung erschwert vorsichtig.

Lassen Sie uns einen Schritt zurück und darüber nachdenken, warum unter einer einzigen URL erschwert die Umsetzung. Bei der Umsetzung einer SOA-Anwendung Ajax, haben Sie einen Client und einem Server-Coder Coder. Der Client-Codierer führt keine Server-Programmierung und will nicht, sie auf der Client-Seite der Dinge zu konzentrieren will. So ist die Client-Programmierer ist in der Lage sein, alles zu tun, er oder sie möchte mit statischen Dateien von einem HTTP-Server bereitgestellt werden. Wenn der Programmierer muss AWeb Service auf statische Dateien, dann dienen sie oder ihn auf dem Server Programmierer abhängig, und diese Abhängigkeit ist nicht erwünscht. Auf den beiden Basis-URLs kann der Client-Programmierer tun, was er oder sie für angemessen hält, und der Server-Programmierer tun kann, was er oder sie für angemessen hält, unabhängig von einander.

Hinweis Es gibt keinen Grund hast du nicht ein Basis-URL wie / Blog und dann zu unterteilen, dass die Base-Namespace / blog / statische und / blog / Dienstleistungen. Der Punkt ist, dass Sie zwei Namespaces URL: eine für die Client-Seite und einer für die Server-Seite zu haben. Weil ich mod_python Verwendung für die Server-Seite und Apache HTTPD für statische Inhalte, ist es sinnvoll, für meine Web-Services werden für alle Python basiert. So habe ich ein Basis-Web-Service-Handler und spezielle Web-Services, wie zB die Blog-Software, die alle als eine Python-Namespace implementiert. Der Basis-Client-Side-URL für alle Anwendungen ist /, und die Basis-Server-Side-URL für alle Anwendungen / Dienste. Mit anderen Architekturen wie ASP.NET würde, die Basis-URL / Blog, und dann diese URL weiter unterteilt werden können.

Ich werde nicht auf dem Client-Side-URLs konzentrieren, weil sie von den Web-Service-URLs für den Anwendungsbereich der Blog-Anwendung getrieben werden. Zum Beispiel, wenn Sie den Eintrag URL / services/blog/entries/archive/2006 hätte, wäre es daher ein geeignetes statische Datei URL / blog/entries/archive/2006.

Bevor ich erkläre, die Art der URLs, wollen wir die vier gemeinsamen HTTP-Verben. Üblicherweise verwenden Sie zwei HTTP-Verben GET und POST, die häufig für den gleichen Zweck. Zum Beispiel kann ein HTML-Formular die Daten mit post entweder GET oder POST. Von einer REST-Perspektive, es ist eine schlechte Praxis GET verwenden, um Daten an den Server senden. Ich erkläre, wie die einzelnen HTTP-Verb in der folgenden Liste zu verwenden. Die beste Möglichkeit, die einzelnen Verben zu verstehen, ist, sie als Anweisungen ähnlich wie SQL-Befehle zu denken. Der Unterschied zwischen dem HTTP-Verben und SQL-Befehlen besteht darin, dass SQL-Tabellen und Zeilen manipuliert, manipuliert und HTTP-Ressourcen mit URLs zugeordnet.

• DELETE (SQL-Äquivalent löschen): Eine selten verwendete Verb, das verwendet wird, um eine Ressource auf dem Server zu löschen. Zum Beispiel, wenn die DELETE ist für die URL verwendet / services / blog / archive / Eingaben wird das Ergebnis, dass alle Blog-Einträge auf dem Server gelöscht werden. Wenn die URL-Suchparameter hat damit verbundenen (z. B. ticker = DELL & value = 23), dann werden alle Einträge, die die Suchparameter entsprechen werden gelöscht. In SQL-sprechen (und im Sinne der Befehl "Löschen") werden die Suchparameter die SQL-WHERE-Parameter.

• GET (SQL-Äquivalent wählen Sie): Eine häufig verwendete Verb, das verwendet wird, um Inhalt vom Server abzurufen. Die angegebene URL ruft die Ressourcen mit dem URL verknüpft. Wenn es beliebige Suchparameter ein, eine Auswahl an Produkten mit der URL, dass die Abfrage Parameter übereinstimmen verbunden ist, durchgeführt werden. In SQL-Abfrage sprechen die Parameter sind die Parameter, wenn im Zusammenhang mit der SELECT-Anweisung.

• POST (SQL-Äquivalent gespeicherte Prozeduren): Eine häufig verwendete Verb verwendet, um Daten an den Server zu senden ist. Es ist wichtig, ein HTTP-POST als eine gespeicherte Prozedur zu betrachten. Things get funny mit einem HTTP-POST in der Interpretation der Rolle der URL. Man könnte sagen, dass die URL der Ressource, die manipuliert wird definiert, und die Parameter festzulegen, wie Sie die Ressource zu manipulieren, aber das ist nicht die Natur einer SQL-Prozedur. Der Name der gespeicherten Prozedur wirkt sich nicht auf die Tische sind manipuliert. So kann ein Blick auf POST werden könnten, um eine Ressource, die anderen Ressourcen, und welche Ressourcen manipuliert werden manipuliert zu definieren, hängt von der Umsetzung eines HTTP-POST. Wählen Sie je nachdem, welche Definition macht Sinn für Sie. Ich finde ein HTTP-POST, sowohl zu allgemeinen und zu spezifischen Nagel auf eine einzige Idee. Ich persönlich wählen Sie die erste Lösung, bei der die URL definiert die Ressource zu manipulieren, und dazu verwendet, um die Ressource zu manipulieren, hängt von der Parameter-Algorithmus. Ein HTTP-POST kann Daten auch wenn es im Allgemeinen nicht verwendet zu generieren. In SQL-zu sprechen, gespeicherte Prozeduren können Ergebnisse zu generieren, obwohl in den meisten Fällen würden Sie wählen den Befehl zu verwenden.

• PUT (SQL-Äquivalent einfügen): Eine selten verwendete Verb, das verwendet wird, um den Inhalt einer Ressource zu ersetzen. Wenn die Ressource mit der URL nicht vorhanden ist verbunden, so wird erstellt. Die URLs von der Anwendung verwendet werden in den nachfolgenden Abschnitten beschrieben.

 / services / blog / Einträge / current

Konkret bedeutet dies die letzte URL n Einträge eines Blogs. Im Laufe der Zeit, die letzte nEinträge zu ändern, und Sie können eine einzige URL zu verweisen Einsatz der neuesten und besten Informationen. In einem abstrakten Sinn, stellt die URL ein Blick auf einige Daten. Das Problem finden Sie in Ihrer Anwendung haben, ist, dass die Menschen eine einzige URL können sie bis ans Ende der Zeit nutzen wollen. Zum Beispiel geht zurück auf das Blog Beispiel, wenn der Monat 06, ist der Tag, 07, und das Jahr 2006, dann zu den modernsten und größten Blog-Einträge zu bekommen, müssen Sie lediglich den Verweis auf die entsprechende Jahr, Monat und Tag URLs. Das Problem ist, dass niemand dies tun würde, da es zu kompliziert und erfordert die Kenntnis, wie die Daten organisiert ist. Eine weitere Möglichkeit, sich zu organisieren Blog-Einträge ist die inkrementelle Zahlen oder Long-Werte verwenden, die die Sekunden zählen seit 1970.

Indem man ein "view"-URL, die Sie erstellen einen Verweis auf die Daten durch ein eingebettetes serverseitig Algorithmus organisiert. Der Server-Side-Algorithmus ist nicht klar, für den Benutzer, und es muss nicht sein. Seien Sie sehr vorsichtig, so dass Suchparameter, um Daten aus der Sicht auszuwählen. Das Ziel der Ansicht, URL ist auf einen leicht zu merkenden und Einsatz von URL. Unter Berücksichtigung Suchparameter mit dem Ziel URL ist dumm, weil der gleiche Effekt kann erreicht mit einer Ressource-URL sein, wie Sie bald sehen werden.

Profil-URLs zum größten Teil nur akzeptieren, HTTP-GET. URLs anzeigen sollte nicht akzeptieren, ein HTTP-PUT-oder ein HTTP löschen, da die Daten abgerufen wird ein Verweis auf eine andere URL. Wenn Sie einen HTTP-PUT-oder ein HTTP-DELETE auf einen Blick URL unterstützen wollen, müssen Sie zu löschen oder die Logik, mit der URL verbunden zu ersetzen, und nicht die Daten. Es ist schwieriger zu bestimmen, ob im Hinblick URL ein HTTP-POST akzeptieren sollte. Man könnte argumentieren, dass ein HTTP-POST-Ansicht URLs nicht sinnvoll, da in den meisten Fällen können Sie nicht aktualisieren, Daten von einer SQL-Ansicht generiert. Ich entgegen, dass da eine gewisse Logik URL anzuzeigen, die entsprechenden Daten zu extrahieren, und ein HTTP-POST enthält Logik enthält, kann ein HTTP-POST-Daten verwendet werden, einzufügen. Im Hinblick auf die Blog-Anwendung, die Entsendung der URL / services / blog / Einträge / Strom wären die Auswirkungen der Erweiterung durch einen Blog-Eintrag zu der Zeit, dass es eingeschickt wurde. Hätten Sie ein HTTP PUT einer neuen Blog-Eintrag, würden die Kunden müssen wissen, wie der Server die zugrunde liegenden Daten Blog organisiert. Die Blog-Anwendung in diesem Artikel beschrieben wird, nach Datum organisiert, aber es muss nicht sein.

 / services / blog / Einträge / Archiv

Diese URL gibt die Basis-Wurzel-URL für alle Blog-Einträge auf dem HTTP-Server gespeichert. In einem abstrakten Sinn, alle Web-Services ein Begriff der Wurzel Ressource-URL. Der Zweck des Root-Ressource-URL ist ein Haupt-Einstiegspunkt für alle Ressourcen in der Web Service zu definieren. Denken Sie an diese URL als index.html Ihres Web-Service. Dies soll nicht heißen, dass einige URLs von der Basis Root-URL-Hierarchie (z. B. sehen, welche URLs) getrennt sind, aber es bedeutet, dass ein Endgerät alle Ressourcen mit dem root-URL durchlaufen kann.

Die Wurzel-URL ist auch ein Beispiel für eine Sammlung URL. Collection URLs verhalten sich ein wenig anders als normale URLs. Betrachten wir zum Beispiel die beiden folgenden Antworten für die Root-URL. Beachten Sie, dass die URL nicht zurückkehren müssen XML, XML ist aber der Einfachheit halber verwendet.

 eingebetteten Daten 

Es gibt zwei Reaktionen in den Beispiel-Code. Die erste Reaktion ist ein Root-Element, das wie ein Kind ein einzelnes Element Element. Die item-Element enthält keine untergeordneten Elemente und hat zwei Attribute, href und id. Die zweite Antwort ist wie die erste, nur das Element hat eine Daten untergeordnetes Element, und es gibt keine href-Attribut. Statt in der zweiten Antwort, gibt es eine URL-Referenz. Der Unterschied zwischen den beiden Reaktionen ist die Übersetzung von dem, was zurückgegeben werden soll, wenn eine Sammlung URL verwiesen wird.

Eine Sammlung URL ist eine URL, die sich selbst enthält keine Daten, sondern dient als Hinweis auf eine Sammlung von Daten Stücke. Wenn die Sammlung URL verwiesen wird, kann der Client wieder eine Reihe von URL-Verweise auf die tatsächlichen Daten oder die eigentlichen Daten selber. Nehmen wir als Beispiel den Blog-Anwendung, die Atom-Format Verweis auf die Sammlung URL Mittel, um alle Daten Teile zurückgeben soll. Allerdings ist es oft unpraktisch, alle Daten Stück zurück, wie die zurückgegebenen Daten-Stream sein könnte gigantisch. Um den Verkehr zu reduzieren, sind Link-Verweise zurück. Aber unser Schwanz jagt wieder tun verschiedenen Formaten nicht zulassen, dass Links. Als Faustregel gilt, zurück, was das Beste für Ihre Anwendung geeignet ist. Unabhängig davon, wie Sie die Daten, Rückkehr in Einklang stehen. Dies bedeutet, wenn alle Ihre Sammlung URLs Rückkehr Daten, dann wieder Daten, und umgekehrt.

Ein Root-oder URL-Sammlung zum größten Teil genannt werden mit dem HTTP-GET-verb. Es wird wahrscheinlich Suchparameter wählen, um bestimmte Einträge, die URLs, wenn sie mit einer großen Anzahl von Einträgen Anwendung reduziert das Dokument zu lang. Zum Beispiel die Auffassung, URL / services / blog / Einträge / current könnte auch wie folgt ausgedrückt werden / services / blog / Einträge / Archiv? Last = 35. Die letzten Suchparameter verwendet wird, um die zuletzt n Einträgen. Die HTTP-Verben PUT und DELETE können, wenn gültigen Sammlung Einträge hinzugefügt werden. Zwar ist es möglich, eine URL zu einer Sammlung von Daten-Ressource-URL, macht es Sinn, dies nur tun, wenn der Server nicht dynamisch erzeugen die Ansammlung umwandeln. Zum Beispiel im Fall der Blog-Software, ist die Sammlung aus einer Datenbank generiert. Executing PUT oder DELETE macht keinen Sinn, es sei denn, es ist die Logik, dass die Prozesse der Daten durch die gesendeten Befehle. Und schließlich ist es möglich, ein HTTP-POST-Prozess, wenn es Server-seitige Logik verbunden ist.

 / services/blog/entries/archive/2006/07/06

Diese URL gibt eine Daten-Ressource-URL verwiesen, dass, wenn die Daten enthält ein Benutzer interessieren Die Daten, die gesendet wird, wird durch den Client in der HTTP-Header Accept ermittelt (dies wird in Artikel 5 behandelt). Eine Daten-Ressource-URL ist der Verarbeitung alle HTTP-Verben kann (GET, PUT, POST und DELETE), wie in den vorhergehenden Abschnitten. Wenn die URL referenziert wird, ein Stück der Daten zurückgegeben werden, aber Sie haben zu fragen Sie selbst, was das Format der Daten ist. Mit der Blog-Applikation als Beispiel, ist das Stück von Daten zurückgegeben wird, muss es den Anschein, dass der URL-Referenzierung ist eine Sammlung URL, weil die Atom-Format ist ein einheitliches Format, dass jeder URL übernimmt eine Sammlung von Blog-Einträge, obwohl es sein könnte nur einen einzigen Eintrag.

Also, wenn Sie Daten-Ressourcen-URLs, denken Sie daran zu schaffen, obwohl sie logisch sind aus einem Stück von Daten, konnte das Format der Daten zu der URL erscheinen wie eine Sammlung URL. Wenn der Client ausgeführt wird ein HTTP-GET, wird der Server haben kein Problem Generierung der Daten. Der Server kann durcheinander geraten, aber, wenn der Client eine HTTP-PUT-oder ein HTTP-POST ausführt. Die Daten an den Server gesendet möglicherweise mehrere Stücke von Daten enthalten, obwohl der Server nur ein einziges Stück von Daten erwartet. So ist die logische Lösung, um eine Fehlermeldung, dass Benutzer nicht mehrere Einträge zu veröffentlichen generieren können. Eine andere Lösung könnte beinhalten Blick durch die Liste der Einträge und Buchung der ersten Einreise. Das Problem bei dieser Strategie ist, dass es mit der Absicht des Kunden ist inkonsistent. Wenn die Client-Daten, enthält mehrere Stücke von Informationen sendet erwarten sie, dass die mehreren Informationen gespeichert werden soll. Wenn der Server nur ein einziges Leben rettet, ist der Kunde links fragen, was schief gelaufen ist. Wenn ein Fehler erzeugt wird, ist der Kunde nicht verlassen fragen, was schief gelaufen ist.

Data-URLs Ressourcen benötigen, um so präzise wie möglich. Sie wollen nicht jede Zweideutigkeit sich zu einem späteren Zeitpunkt. Zum Beispiel, wenn Sie noch heute Ihr Blog-Anwendung ermöglicht nur ein einzelner Benutzer, sondern zu einem bestimmten Zeitpunkt in der Zukunft könnte es mehreren Benutzern zu ermöglichen, fügen Sie dann die Funktionalität. Bei der Blog-Applikation, die / bedeuten würde user / Dienstleistungen. Für die erste Version der Anwendung, / user / services könnte hart codiert und nicht relevant bei der Verarbeitung des URL. Sie haben jedoch ein Platzhalter für den Fall erstellt, wenn Sie mehrere Benutzer. Ich sage nicht, sollten Sie für jede mögliche Änderungen in der Zukunft zu kompensieren, denn schließlich können Sie Server-Umleitung verwenden (zB http://user.server/services).

Was Sie wollen, sich zu erinnern ist, dass die Daten Ressource-URLs Ihrem Server überleben wird, Ihre Technologie, und auch Ihr Unternehmen. URLs sind wie Stücke von Immobilien und sind Teil Ihrer Marke, so müssen Sie diese mit Bedacht wählen. Wenn die Menschen wissen, und ordnen Sie eine bestimmte URL mit AWeb Website oder des Unternehmens, ist es sehr schwierig für die Leute zu einer anderen URL zu wechseln. Stellen Sie sich beispielsweise, wenn Google morgen beschlossen, sich ReallyCoolServer nennen. Das Unternehmen ReallyCoolServer würde nicht sofort die gleichen Auswirkungen oder die Anerkennung als Marke Google hat heute.

 / services / blog / Einträge / Archiv? delete = 35 und / services/blog/entries/archive/2005? Vergangenheit = 35

Die Beispiele in diesem Artikel zeigen, dass die URLs können Suchparameter. Allerdings sind sowohl die URLs in diesem Abschnitt die Überschrift nicht präsentiert Beispiele für Logik, die die gleiche Absicht nur die zweite ist eine akzeptable URL hat. Die erste URL ist nicht akzeptabel, da setzt eine Veränderung der Daten. Sie haben bisher verwendeten Suchparameter ein, die ein Filter-Betrieb eines HTTP GET durchzuführen. Mit Suchparameter in diesem Zusammenhang ist akzeptabel, da sie nicht die Art der zugrunde liegenden Daten zu ändern; Sie sind die Angabe eines Filters. Der Filter verwendet werden könnten, um das Ergebnis von einer Sprache in eine andere Gruppe zu konvertieren, und es kann komplexe Algorithmen enthalten. Aber ungeachtet des Algorithmus gibt es keine Änderung der Daten, die gefiltert wird.

Die erste URL, / services / blog / Einträge / Archiv? Delete = 35, ist anders, dass es das Wort "verwendet löschen" und "Löschen" bedeutet, eine Eintragung (en) zu löschen. So ist die Suchparameter die zugrunde liegenden Daten ändern und ist nicht akzeptabel. Natürlich gibt es eine Ausnahme, wenn das Wort "Löschen" bedeutet nicht, löschen Sie im Sinne von "Löschen aus der Datenquelle", sondern bedeutet löschen aus der erzeugten Ergebnismenge. Dann löschen Stichwort wird ein Filter-Betrieb und ist akzeptabel. Änderungen an den zugrunde liegenden Daten sind das Ergebnis der Ausführung der HTTP-POST, PUT und DELETE. Die URLs für die Blog-Anwendung verwendet werden, relativ allgemein und veranschaulichen die meisten der Varianten, die Sie treffen, wenn Gebäude REST-basierte Web-Services. Insgesamt sollten Sie daran erinnern, dass der Aufbau REST-basierte Web-Dienste wie die Verbindung zu einer Datenbank, unterstützt SQL. Sie haben eine Anzahl von HTTP-Verben, die dazu verwendet werden, hinzufügen, bearbeiten, löschen und Daten abrufen können. Wie, dass die Daten verwaltet wird die Verantwortung der REST Web-Service-Designer. Ich werde nicht durch die Server-Implementierung zu Fuß, weil es ist eine Anwendung Problem. Bei der Blog-Anwendung sind, manipulieren Sie Blog-Einträge, die nur sehr wenig Business-Logik haben. Zum Beispiel, wenn Sie eine Blog-Anwendung mit einer Hypothek Anwendung Gegensatz dazu können Sie sehen, dass eine Hypothek Anwendung ziemlich viel Logik hat, und es hat auch eine Art der URL, die nicht enthält Daten und ist wie folgt definiert.

 / services / Hypothek / Berechnung / payments

Die definierten URL ist keine Daten-Ressource-URL, sondern eine "Frage, Antwort out"-URL. Es ist kein Server-Side-Daten oder Anzeigen von Daten oder der Datenerhebung. Es gibt nur eine Berechnung damit, ist die einzige HTTP-Verb verwendet werden kann, HTTP POST. Die andere HTTP-Verben nicht sinnvoll und sollte in diesem Zusammenhang nicht verwendet werden.

Ein Artikel eingereicht von Sonja Lande


Disclaimer:Unsere Website ist nicht verantwortlich für den Inhalt dieses Artikels. Webarticles ist eine kostenlose Informationsquelle.
Wichtig: Dieser Artikel "Die Implementierung der Anwendungslogik Layer" wurde durch ein automatisches Software übersetzt. Wir fühlen uns leid für alle Rechtschreibfehler, die möglicherweise aufgetreten sind. Vielen Dank für Ihr Verständnis.


Online: 380 users browsing the articles directory