Was ist der Grund für die Verwendung von WADL?


80

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?


Aus Wikipedia : Die Web Application Description Language (WADL) ist eine maschinenlesbare XML-Beschreibung von HTTP-basierten Webdiensten.
Ricardo

Antworten:


153

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.


7
"--- IT SAVES ASS" war der beste Teil. Gibt es einen PHP-Code-Generator aus der WADL-Datei?
Jatin Dhoot

Wenn Sie kein Wadl in einer Webanwendung benötigen. Was müssen Sie tun, um eine Anfrage zum Abrufen der Werte zu senden?
Jesse

Sie können das andere Team beispielsweise bitten, Ihnen das Client-SDK zur Verfügung zu stellen.
Henryk Konsek

37

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.


10
Für die Verwendung von REST müssen Sie die Daten / Dokumente definieren, die Sie hin und her übertragen. Das Problem mit WADL ist, dass es auch versucht, die Endpunkte zu definieren, die nicht Teil der API-Definition sein sollten.
Darrel Miller

4
Derrel, ich kenne keinen einzigen Webdienst, für den ich jemals einen Client geschrieben habe, der keinen einzigen Endpunkt hatte, mit dem er verwendet wurde.
Brill Pappin

30

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.


19
WADL spricht auch diejenigen an, die einen Chef haben, der sagt, dass Sie eine formale Definition in einem Standardformat haben müssen. Ich sage nicht, dass dies der beste Weg ist, nur dass es manchmal nützlich ist, sozusagen "ein Organisationskästchen anzukreuzen". Die Tatsache, dass es übertrieben ist, kann für den eigenen Chef verloren gehen. Die formale Def-Datei kann Sie jedoch davor bewahren, zurück in die SOAP-Crack-Pipe geschoben zu werden, an der alle anderen coolen Corporate Kids saugen.
Roboprog

2
@Roboprog Dokumentieren Sie Ihre Medientypen anstelle der Endpunkte. Es gibt viele gute Beispiele in der IANA-Registrierung. Auch die Sun Cloud API ist ein gutes Beispiel. Sie müssen Ihren Chef davon überzeugen, dass die Dokumentation der Endpunkte eine schlechte Idee für die Zukunft ist.
Darrel Miller

1
Es ist auch praktisch für Entwickler, die tatsächlich mehr zu tun haben, um den ganzen Tag Client-Code zu schreiben.
Brill Pappin

1
@cboettig Schema ist nur ein Satz von Syntaxregeln, sie fügen keine Semantik hinzu. Sie benötigen einen anderen Mechanismus wie einen Medientyp oder ein Profil, um Semantik hinzuzufügen.
Darrel Miller

1
@cboettig Menschen verknüpfen Semantik mit Elementen und Attributen mit Namespace, aber es gibt keinen standardisierten Prozess dafür. Medientypen verfügen über eine offizielle Registrierung, die auf Spezifikationen verweist, die die Semantik definieren. iana.org/assignments/media-types/application
Darrel Miller

16

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.


16

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.


3
Klar, das ist eine gute Antwort. Der Widerstand scheint von Hardcore-SOAP-Leuten zu kommen, die überhaupt kein REST wollen, und von einigen Hardcore-REST-Cowboys, die keine zusätzliche Arbeit wollen. Ein formelles Dokument zu haben, ist ein gutes Feigenblatt in einem "Unternehmen", auch wenn es Zeitverschwendung für eine winzige API in einem Startup ist.
Roboprog

1
Nach meiner Erfahrung gibt es drei Hauptgründe für so etwas wie WADL: - Viele gute Entwickler kennen REST nicht. - Wenn Sie auf dem Laufenden sind, beschleunigt ein Dokument oder eine API die Dinge enorm. - Sie können niemals davon ausgehen, dass jemand anderes einen REST-Aufruf so implementiert hat, wie Sie es tun würden. Selbst REST-Evangelisten können dem nicht zustimmen :) Ich bin sogar auf Fälle gestoßen, in denen eine Umgebung die Ausführung eines DELETE- oder PUT-Aufrufs nicht zulässt, sodass Sie eine REST-ähnliche Schnittstelle erhalten, die nur GET- und PUT-Aufrufe verwendet ... und dann wird die Dokumentation entscheidend.
Brill Pappin

Ich bin sicher, Sie meinten GET und POST , wie beim Fälschen von PUT und DELETE mit funky POST-Optionen.
Leider


3

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.


0

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.