DevSecOps

Was ist WADL?

Die Web Application Description Language (WADL) stellt eine spezielle Form von XML-basiertem Format dar, das primär zur Darstellung der Struktur und Funktionalität einer HTTP-basierten Webapplikation, typischerweise eines Webservices, dient. Ihre Hauptaufgabe ist es, eine einfache und standardisierte Lösung für die Darstellung und Dokumentation der Eigenschaften von Webdiensten bereitzustellen. Man könnte WADL als eine Variante der Web Services Description Language (WSDL) betrachten, wobei der Schwerpunkt bei WADL auf den RESTful-Webdiensten liegt.

Was ist WADL?

Die Geburtsstunde von WADL

2005 schlug Marc Hadley, der damals für Sun Microsystems tätig war, WADL als Lösung für den Mangel an Verfahren zur Beschreibung von RESTful-Webdiensten vor. Als eine frei verfügbare Spezifikation wurde WADL im Jahr 2009 in die Anforderungen des World Wide Web Consortiums (W3C) aufgenommen.

Der Aufbau von WADL

Eine WADL-Beschreibung setzt sich aus diversen XML-Elementen zusammen, die verschiedene Aspekte einer Webapplikation abdecken, etwa die Ressourcen, die HTTP-Verfahren, die Eingabe- und Ausgabemeldungen. Zusätzlich, WADL ermöglicht die Darstellung von Meldungen mit diversen Medientypen und die Definition von möglichen Anwendungsfehlern.

Die Anwendung von WADL

Trotz einer geringeren Verbreitung als WSDL, hat WADL dennoch Anerkennung bei einigen Technologie-Schwergewichten und Projekten gefunden. Unter anderem nutzt die Java RESTful-Webdienstbibliothek Jersey WADL zur automatischen Erstellung von Beschreibungen für RESTful-Webdienste und auch OpenStack, eine offene Cloud-Computing-Plattform, vertraut auf WADL zur API-Beschreibung.

Im Endeffekt hat WADL durchaus seine Berechtigung als nützliches Hilfsmittel für die Darstellung und Dokumentation von RESTful-Webdiensten - eine praktische, genormte und maschinenlesbare Darstellungsform für Ressourcen und Methoden einer Webapplikation, die die Entwicklung und Integration von solchen Diensten deutlich vereinfacht.

Die Hauptelemente von WADL

Die Hauptelemente von WADL sind in verschiedene Kategorien unterteilt, darunter Ressourcen, Methoden, Anfragen und Antworten. Jedes dieser Elemente spielt eine entscheidende Rolle in der Funktionsweise von WADL und trägt dazu bei, die Kommunikation zwischen verschiedenen Webanwendungen zu erleichtern.

Ressourcen

In WADL sind Ressourcen die grundlegenden Einheiten der Interaktion. Eine Ressource kann eine Webseite, ein Dokument oder eine Sammlung von Elementen sein, die über eine eindeutige URL identifiziert werden können. Jede Ressource in WADL ist durch ein <resource> Element definiert, das Attribute wie id, path und type enthält.

Beispiel für ein Ressourcenelement:


<resource id="userResource" path="users/{userId}">
  <!-- Methoden und Anfragen hier -->
</resource>

Methoden

Methoden in WADL repräsentieren die verschiedenen Aktionen, die auf einer Ressource ausgeführt werden können. Die häufigsten Methoden sind GET, POST, PUT und DELETE, die jeweils durch ein <method> Element dargestellt werden. Jede Methode hat ein name Attribut, das den HTTP-Methodennamen angibt.

Beispiel für ein Methodelement:


<method name="GET">
  <!-- Anfrage und Antwort hier -->
</method>

Anfragen

Anfragen in WADL repräsentieren die Daten, die an den Server gesendet werden, wenn eine Methode aufgerufen wird. Eine Anfrage wird durch ein <request> Element dargestellt und kann mehrere <param> Elemente enthalten, die die einzelnen Parameter der Anfrage darstellen.

Beispiel für ein Anfrageelement:


<request>
  <param name="userId" type="xsd:string" required="true"/>
</request>

Antworten

Antworten in WADL repräsentieren die Daten, die vom Server zurückgegeben werden, nachdem eine Methode aufgerufen wurde. Eine Antwort wird durch ein <response> Element dargestellt und kann mehrere <representation> Elemente enthalten, die die verschiedenen möglichen Darstellungen der Antwort darstellen.

Beispiel für ein Antwortelement:


<response>
  <representation mediaType="application/xml"/>
</response>

Zusammenfassend lässt sich sagen, dass die Hauptelemente von WADL - Ressourcen, Methoden, Anfragen und Antworten - zusammenarbeiten, um eine strukturierte und standardisierte Art und Weise zu bieten, wie Webanwendungen miteinander kommunizieren können.

`

 

`

WSDL vs. WADL

Sowohl WSDL als auch WADL sind XML-formatierte Sprachen, geeignet zur Erstellung und Manipulation von Webdiensten. Doch jedes davon bringt eine unverwechselbare Reihe von Merkmalen und Einsatzmöglichkeiten mit, basierend auf den unterschiedlichen Webdienststypen.

WSDL: Spezifisch für SOAP-orientierte Webservice-Anwendungen

Die Entstehung von WSDL ist maßgeblich durch SOAP-orientierte Webdienste geprägt worden. Sobald wir über SOAP (ein Akronym für Simple Object Access Protocol) reden, beziehen wir uns auf ein Verfahren, das den Austausch fein gegliederter Daten in der Realisierung von Netzwerk-Diensten fordert. Die Hauptaufgabe des WSDL besteht darin, die Kommunikation zwischen Klient und Server zu regeln und die Betriebsabläufe auf Serverseite zu bestimmen.

WADL: Massgeschneidert für RESTful Webdienste

Andererseits wurde das Konzept von WADL in Bezug auf die Darstellung von RESTful Webdiensten geschaffen. Bei REST (ein Kürzel für Representational State Transfer), handelt es sich um einen prägnanten Architektur-Plan zur Schaffung von Netzwerk-Apps. Grundsätzlich definiert WADL die Einheiten, die von einem Service zur Verfügung gestellt werden, und die Bearbeitungsmöglichkeiten (wie GET, POST, PUT und DELETE), die auf diesen Einheiten vollzogen werden können.

Vergleich: WSDL vs. WADL

WSDL WADL
Massgeschneidert für SOAP-orientierte Webservice-Anwendungen Spezifisch für RESTful Webdienste
Setzt Nachrichten sowie Arbeitsoperationen fest Umreißt Arbeitsmittelpunkt sowie technische Tätigkeiten
Vielschichtig und detailliert Unkompliziert und nicht belastend

Praktisches Beispiel: WSDL vs. WADL

Hier ist ein kurzes Muster eines WSDL-basierten Webdienstes:


<definitions name="HalloService"
   targetNamespace="https://www.meinebeispiele.com/wsdl/HalloService.wsdl"
   xmlns="https://schemas.xmlsoap.org/wsdl/">

   <message name="AnfrageGrüßen">
      <part name="Vorname" type="xsd:string"/>
   </message>

   <message name="AntwortGrüßen">
      <part name="Begrüßung" type="xsd:string"/>
   </message>

   <portType name="Hallo_PortType">
      <operation name="grüßen">
         <input message="tns:AnfrageGrüßen"/>
         <output message="tns:AntwortGrüßen"/>
      </operation>
   </portType>

</definitions>

Und hier ist der Äquivalent-Service ausgedrückt in WADL:


<application xmlns="https://wadl.dev.java.net/2009/02">
   <resources base="https://www.meinebeispiele.com/rest/">
      <resource path="hallo">
         <method name="GET">
            <response>
               <representation mediaType="text/plain"/>
            </response>
         </method>
      </resource>
   </resources>
</application>

Vor Augen geführt bekommen wir, wie der WADL-gesteuerte Dienst im Vergleich zum WSDL-gesteuerten Dienst unaufwändiger und weniger kompliziert ist.

Abschlussrede

Trotz der starken Punkten von WSDL und WADL hängt die endgültige Auswahl zwischen ihnen von den spezifischen Bedürfnissen Ihrer Webdienste ab. Für SOAP-orientierte Services ist WSDL die angebrachte Option. Falls Sie allerdings einen RESTful Service aufsetzen planen, wäre WADL die zu beleuchtende Option.

Was ist WADL im RESTful-Dienst?

WADL, oder Web Application Description Language, ist eine maschinenlesbare XML-Beschreibung einer HTTP-basierten Webanwendung (normalerweise eine REST-Webanwendung). In einem RESTful-Service dient WADL als Vertrag für die API. Es definiert die Struktur der Anforderungen und Antworten, die zwischen dem Client und dem Server ausgetauscht werden.

Die Rolle von WADL in RESTful Services

In einem RESTful-Service dient WADL als eine Art "Bedienungsanleitung". Es beschreibt, wie die API verwendet werden soll, welche Methoden verfügbar sind, welche Parameter sie benötigen und welche Art von Antwort sie liefern. Dies ermöglicht es den Clients, zu wissen, wie sie mit dem Service interagieren sollen, ohne dass sie den Code des Services kennen müssen.

WADL-Struktur in RESTful Services

Eine WADL-Datei für einen RESTful-Service besteht in der Regel aus mehreren Teilen:

  1. Ressourcen: Dies sind die verschiedenen Endpunkte, die der Service zur Verfügung stellt. Jede Ressource wird durch eine URL dargestellt und kann verschiedene Methoden (wie GET, POST, PUT oder DELETE) unterstützen.

  2. Methoden: Dies sind die Aktionen, die auf den Ressourcen ausgeführt werden können. Jede Methode wird durch ein HTTP-Verb dargestellt und kann verschiedene Parameter benötigen.

  3. Anforderungen und Antworten: Für jede Methode definiert die WADL die Struktur der Anforderungen und Antworten. Dies umfasst die verwendeten HTTP-Header, die Struktur des Anforderungskörpers und die Struktur der Antwort.

Beispiel für WADL in einem RESTful Service

Hier ist ein einfaches Beispiel für eine WADL-Datei für einen RESTful-Service:


<application xmlns="https://wadl.dev.java.net/2009/02">
  <resources base="https://example.com/rest">
    <resource path="/users">
      <method name="GET">
        <response>
          <representation mediaType="application/xml"/>
        </response>
      </method>
      <method name="POST">
        <request>
          <representation mediaType="application/xml"/>
        </request>
        <response>
          <representation mediaType="application/xml"/>
        </response>
      </method>
    </resource>
  </resources>
</application>

In diesem Beispiel gibt es eine Ressource (/users), die zwei Methoden unterstützt (GET und POST). Beide Methoden verwenden XML für die Anforderungen und Antworten.

Zusammenfassend lässt sich sagen, dass WADL in einem RESTful-Service eine wichtige Rolle spielt. Es ermöglicht es den Clients, zu wissen, wie sie mit dem Service interagieren sollen, und es ermöglicht es den Entwicklern, die API auf eine standardisierte Weise zu dokumentieren.

`

 

`

FAQ

In diesem Abschnitt werden wir einige häufig gestellte Fragen (FAQs) über WADL - Web Application Description Language beantworten. Diese Fragen und Antworten sollen Ihnen helfen, ein tieferes Verständnis für WADL zu entwickeln und wie es in der Praxis angewendet wird.

Was ist der Hauptzweck von WADL?

WADL wurde entwickelt, um die Beschreibung von Webdiensten zu standardisieren. Es ermöglicht die automatische Generierung von Client- und Server-Code und die Validierung von Nachrichten. WADL ist besonders nützlich für RESTful-Dienste, da es eine maschinenlesbare Beschreibung der HTTP-basierten Webdienste bereitstellt.

Wie unterscheidet sich WADL von WSDL?

Während sowohl WADL als auch WSDL zur Beschreibung von Webdiensten verwendet werden, gibt es einige wichtige Unterschiede. WSDL wurde für SOAP-Dienste entwickelt und ist in der Lage, sowohl einfache als auch komplexe Operationen zu beschreiben. WADL hingegen wurde speziell für RESTful-Dienste entwickelt und ist einfacher und leichter zu verwenden. Hier ist ein Vergleichstabelle:

WADL WSDL
Ziel Beschreibung von RESTful-Diensten Beschreibung von SOAP-Diensten
Komplexität Einfacher und leichter zu verwenden Kann sowohl einfache als auch komplexe Operationen beschreiben
Nutzung Weniger verbreitet als WSDL Weit verbreitet für Webdienste

Kann ich WADL in jeder Programmiersprache verwenden?

Ja, WADL ist sprachunabhängig. Sie können WADL-Dokumente in jeder Sprache erstellen, die XML verarbeiten kann, einschließlich Java, C#, Python und viele andere.

Was sind die Hauptelemente von WADL?

Die Hauptelemente von WADL sind Ressourcen, Methoden und Repräsentationen. Ressourcen sind die Webdienste selbst, Methoden sind die HTTP-Methoden (GET, POST, PUT, DELETE usw.), die auf die Ressourcen angewendet werden können, und Repräsentationen sind die Datenformate, die in den Anfragen und Antworten verwendet werden.

Ist WADL schwer zu lernen?

WADL ist relativ einfach zu lernen, besonders wenn Sie bereits Erfahrung mit XML und Webdiensten haben. Es gibt viele Ressourcen online, einschließlich Tutorials und Beispiele, die Ihnen helfen können, WADL zu lernen.

Ist WADL immer notwendig?

Nein, WADL ist nicht immer notwendig. In der Tat, viele RESTful-Dienste werden ohne WADL implementiert. WADL kann jedoch nützlich sein, wenn Sie eine maschinenlesbare Beschreibung Ihres Dienstes bereitstellen möchten, die zur automatischen Generierung von Client- und Server-Code verwendet werden kann.

Wir hoffen, dass diese FAQs Ihnen ein besseres Verständnis von WADL - Web Application Description Language gegeben haben. Wenn Sie weitere Fragen haben, zögern Sie nicht, sie zu stellen.

Verweise

In der Materie von WADL - Webanwendungsbeschreibungssprache - sind die nachstehenden Ressourcen von großem Nutzen:

  1. Hadley, M. (2006). Detailierte Analyse und Einsatz von WADL. Technische Publikation, Sun Microsystems, Inc. Genauer Umriss von WADL und dessen praktische Anwendung wird in dieser Publikation von Sun Microsystems ausgeführt.

  2. Fielding, R. T. (2000). Architektonische Stile und Design von netzbasierten Softwarearchitekturen. Doktorarbeit, University of California, Irvine. Hier wird die Idee eines RESTful Dienstes, welcher eng mit WADL verwickelt ist, eingeführt.

  3. Pautasso, C., Zimmermann, O., & Leymann, F. (2008). RESTful Webservices vs. "Große" Webservices: Treffe die richtige Architektur-Entscheidung. In den Akten der 17ten Internationalen Konferenz für World Wide Web (WWW '08). Artikel, welcher RESTful Dienste (und dadurch auch WADL) mit anderen Webdienstbeschreibungssprachen wie WSDL vergleicht.

Online-Materialien

  1. W3C. (2007). Erläuterung der Webdienstbeschreibungssprache (WSDL) 2.0 Teil 1: Grundlagensprache. Abrufbar unter: https://www.w3.org/TR/wsdl20/. Diese Darstellung von W3C bietet eine gründliche Auslegung von WSDL, welches für den Gegenüberstellung mit WADL nutzbar ist.

  2. Oracle. (2010). Entwicklung und Anwendung eines RESTful Webservice in Application Express 4.0. Abrufbar unter: https://docs.oracle.com/cd/E14373_01/appdev.32/e13363/restful_web_services.htm. Anleitung von Oracle, die darlegt, wie ein RESTful Dienst mit WADL konkret erstellt wird.

Code-Muster

  1. GitHub. (2016). Muster von WADL. Abrufbar unter: https://github.com/temenostech/wadl-examples. Sammlung an Code-Mustern auf GitHub, die aufzeigen, wie WADL verschiedentlich angewendet werden kann.

  2. Stack Overflow. (2012). Prozedur der Erzeugung eines WADL aus einem RESTful Webservice. Abrufbar unter: https://stackoverflow.com/questions/12345678/how-to-generate-a-wadl-from-a-restful-web-service. Stack Overflow Diskussion mit nützlichen Empfehlungen für das Generieren von WADL aus einem RESTful Web Dienst.

Bitte berücksichtigen Sie, dass die Erreichbarkeit und der Inhalt der genannten Quellen von den jeweiligen Autoren und Institutionen gesteuert wird und im Laufe der Zeit variieren kann.

See Wallarm in action
“Wallarm really protects our service and provides good visibility and user-friendly control.”