Um RESTful zu beschreiben, können wir sagen, dass jede Ressource ihren eigenen URI hat. Mit HTTP GET, POST, PUT und DELETE können wir diese Ressourcen bearbeiten. Alle Ressourcen sind gegenständlich. Wer unsere Ressourcen nutzen möchte, kann dies über einen Browser oder einen REST-Client tun.
Das ist die Hauptidee einer RESTful-Architektur. Diese Architektur ermöglicht Dienste im Internet. Warum braucht diese Architektur WADL? Was bietet WADL, was Standard-HTTP nicht bietet? Warum muss WADL existieren?
Antworten:
Der Zweck von WADL ist die Definition eines Vertrags . Der Vertrag legt fest, wie eine Partei eine andere anrufen kann.
Wenn Sie eine Webanwendung von Grund auf neu erstellen, benötigen Sie keinen Vertrag und keine WADL .
Wenn Sie Ihr System in das andere System integrieren und klar mit dessen Entwicklungsteam kommunizieren können, benötigen Sie keinen Vertrag und keine WADL (da Sie einen Anruf tätigen können, um die Dinge klarer zu machen).
Wenn Sie jedoch ein komplexes Unternehmenssystem in mehrere andere komplexe Unternehmenssysteme integrieren, die von mehreren verschiedenen Unternehmen (oder Bundesinstitutionen) verwaltet werden, möchten Sie , dass ein Kommunikationsvertrag so streng wie möglich definiert wird. Dann benötigen Sie WADL oder Open Specification. Brauche es dringend .
Menschen mit einem schwachen Unternehmenshintergrund neigen dazu, die gesamte IT als eine Sammlung getrennter Webanwendungen zu betrachten, die unabhängig voneinander entwickelt wurden. Aber die Realität eines Unternehmens ist manchmal schwierig. Manchmal können Sie nicht einmal die Leute anrufen oder schreiben, die die Anwendung entwickeln, in die Sie integrieren müssen. Manchmal kommunizieren Sie mit einer Legacy-Anwendung, die nicht mehr gewartet wird. Sie wird nur ausgeführt und Sie müssen herausfinden, wie Sie ordnungsgemäß mit ihr kommunizieren können. Unter solchen Bedingungen brauchst du einen Vertrag, weil er deinen Arsch rettet .
Tatsächlich ist die Kundengenerierung das untergeordnete Merkmal der Vertragsdefinition. Es ist nur ein Spielzeug. Der Vertrag erzwingt schlechte Kommunikatoren, um die Integrationsregeln klar zu kommunizieren. Dies ist der Hauptgrund für die Verwendung von WADL oder Open Specification oder was auch immer.
quelle
Die Verwendung von WADL bedeutet, dass Sie möglicherweise so freundlich sind, die Daten / Dokumente, die Sie hin und her weitergeben, tatsächlich zu definieren. Angenommen, Sie übergeben einige XML-Fragmente, die möglicherweise tatsächlich Teil eines definierten Schemas sind.
Ob Sie den DL zum Generieren von Code verwenden oder nicht, ist mir nicht sehr wichtig. Meiner subjektiven Meinung nach ist es wichtig, eine formelle Vereinbarung über die Schnittstellen zwischen Geschäftspartnern zu treffen. Selbst wenn das, was übergeben wird, offensichtlich ist, hilft es zu identifizieren, wer was später reparieren muss, wenn jemand die vorherige Schnittstelle ändert.
Das Datenformat ist ebenso Teil einer Schnittstelle wie Verbenamen.
quelle
WADL spricht Leute aus der SOAP-Welt an, in der häufig ein Codegenerator verwendet wird, um clientseitigen Code basierend auf der WSDL zu erstellen. Ich denke nicht, dass dieser Mechanismus in REST nützlich ist, da er Clientcode erstellt, der an Serverendpunkte gekoppelt ist.
Ich glaube, wenn Sie Ihre Medientypen richtig definieren und Hypermedien innerhalb dieser Medientypen verwenden, ist WADL nicht erforderlich. Die Beschreibung der verfügbaren Endpunkte ist in den Medientypdefinitionen selbst enthalten. Und wenn Sie sich jetzt sagen, aber application / xml keine Informationen über verfügbare Hyperlinks enthält, dann sage ich BINGO. Aus diesem Grund denke ich nicht, dass application / xml und application / json geeignete Medientypen für REST sind. Ich sage nicht, dass Sie kein XML oder JSON verwenden, sondern nur nicht den generischen Medientypnamen.
Der andere Reiz von WADL besteht darin, REST-Services zu dokumentieren. Leider führt es Entwickler auf den falschen Weg, da WADL versucht, serverseitige Endpunkte zu dokumentieren. Die Dokumentation eines REST-Service sollte sich in erster Linie auf die Medientypen konzentrieren. Ein Client-Entwickler sollte in der Lage sein, einen REST-Client zu schreiben, ohne eine andere URL als die Root-URL zu kennen.
quelle
Mit WADL können Sie Code, Tests und Dokumentation generieren. Tatsächlich gibt es nur wenige sehr nützliche Tools, die WADL verwenden. Einige Beispiele finden Sie hier . Das Problem mit dem "reinen" REST, wie in Fieldings Dissertation beschrieben, besteht darin, Clients zu schreiben, die Hypermedia unterstützen (stellen Sie sich beispielsweise vor, Sie schreiben eine Java Swing-basierte Client-Anwendung). Mit WADL ist diese Aufgabe vollständig automatisiert und meiner Ansicht nach ein großer Vorteil. Das Testen wird auch viel einfacher.
quelle
Bevor ich meine Erklärung gebe, möchte ich sagen, dass die meisten reinen REST-Extremisten sie bis ans Ende der Welt verspotten werden. Ich stimme ihnen nicht zu, da ich lieber etwas erledigen möchte, aber nur damit Sie es wissen.
WADL ist eine Beschreibung einer Webdienst-API, ähnlich wie WSDL für SOAP-Webdienste, die besser auf RESTful-Schnittstellen abgestimmt sind (etwas, in dem WSDL schlecht ist).
Nach meiner Erfahrung besteht die Hauptanwendung darin, Ihnen das Generieren von Client-Code zu ermöglichen, mit dem der Dienst aufgerufen werden kann (praktisch, wenn es sich um eine sehr große API handelt, die buchstäblich Stunden Arbeit spart). Es dient auch dazu, eine REST-ähnliche Schnittstelle zu dokumentieren.
quelle
REST gibt nichts über WADL an.
quelle
Wenn Sie die REST-Services verfügbar machen möchten, generieren Sie am besten WADL und teilen sie mit dem Verbraucher (ähnlich wie WSDL in SOAP-basierten Webdiensten). WADL wird verwendet, um den Dienst an Ort und Stelle zu beschreiben.
quelle
WADL ist nicht erforderlich. Wenn Sie jedoch mit einer komplexen vorhandenen Anwendung arbeiten und den REST-Serviceaufruf durch Ersetzen des EJB / SOAP-Serviceaufrufs implementieren möchten, ist es sehr sicher und empfehlenswert, WADL zu verwenden. Wenn Sie WADL verwenden, um clientseitige Java-Stubs zu generieren, sind Sie mit dem Dienst synchronisiert.
Sie können mithilfe des Wadl2java-Maven-Plugins mithilfe der WADL-Datei einen clientseitigen Java-Stub generieren.
quelle