web-dev-qa-db-de.com

REST Webservice WSDL?

Ich implementiere einen Web-Service und habe sowohl eine REST - als auch eine SOAP -Version implementiert, um zu sehen, welche meinen Anforderungen entsprach. Ich habe mich für REST aufgrund seiner Einfachheit entschieden und werde dies wahrscheinlich tun eine iPhone-App entwickeln, um sie zu konsumieren. Meine Frage ist wirklich einfach: Ist es möglich, eine WSDL oder WADL für meinen REST - Dienst zu erstellen, und ist dies notwendig?

Vielen Dank

35
Ian

Bei einem guten RESTful-Service ist es nicht erforderlich, WADL zu generieren (ganz zu schweigen von der weniger gut passenden WSDL), da diese sich selbst beschreiben wird. Mit "Selbstbeschreibung" meine ich insbesondere, dass Dokumente geliefert werden, in denen alle (relevanten) Ressourcen beschrieben werden, die vom Dienst veröffentlicht werden, und dass bei Verwendung einer Standard-HTTP-OPTIONS-Anforderung für eine dieser Informationen grundlegende Informationen zur Interaktion angezeigt werden. Der einzige wirkliche Vorteil der Verwendung von WADL besteht darin, dass der Aufrufer die Schemas für die komplexen Dokumente ermitteln kann, mit denen er im Voraus arbeiten muss. REST selbst bietet dort keine Hilfe an (und einige RESTianer glauben, dass solche Dinge kontraproduktiv sind, was ich nicht sicher bin, dem ich zustimme).

Natürlich erfasst dies nicht die tieferen Interaktionsmuster, aber auch die überwiegende Mehrheit der WSDL-Beschreibungen von Services kann sich dort nicht ändern.


Für das Protokoll verwende ich Apache CXF, um RESTful-Dienste (mit JAX-RS) zu erstellen und WADL für sie zu veröffentlichen.

38
Donal Fellows

Das W3C hat eine offizielle Empfehlung für einen REST - Dokumentationsstandard basierend auf WSDL 2.0 gegeben. Hier ist ein Zitat aus dem IBM Artikel :

Der Begriff Webdienste wird normalerweise mit operation- oder .__ verknüpft. aktionsbasierte Dienste, die SOAP und die WS * -Standards verwenden, z. B. WS-Adressierung und WS-Sicherheit. Der Begriff REST Web Services im Allgemeinen bezieht sich auf eine ressourcenbasierte Webservice-Architektur, die HTTP .__ verwendet. und XML. Jeder dieser architektonischen Webdienststile hat seinen Platz Bis vor kurzem unterstützte der WSDL-Standard jedoch nicht beide gleich Stile. Die WSDL 1.1-HTTP-Bindung war für die Beschreibung von __ nicht geeignet. Kommunikation mit HTTP und XML, daher gab es keine Möglichkeit, Beschreiben von REST Web Services mit WSDL. Die Veröffentlichung von WSDL 2.0, das mit Blick auf REST Web Services konzipiert wurde, als World Wide Web W3C-Empfehlung (Consortium) bedeutet, dass jetzt eine Sprache für .__ vorhanden ist. beschreiben REST Web Services.

6

Natürlich ist es möglich, aber um zu antworten, ob es notwendig ist oder nicht, haben Sie nicht genügend Informationen bereitgestellt.

Ich schlage vor, dass Sie einen Blick auf die Developerworks-Site von IBM werfen, die einen interessanten Artikel zum Thema http://www.ibm.com/developerworks/webservices/library/ws-restwsdl/ enthält. 
Ich hoffe es hilft.


Streng genommen ist dies mit WSDL 1.0 nicht möglich, aber mit WSDL2 ist dies möglich, da für diese Art von Nachfrage entwickelt wurde.

"... WSDL 2.0 in einem WS-I-Profil, das die Anforderungen Für Webdienste im Stil REST" erfüllt. Der Zusatz von GET in SOAP 1.2 und mehrere Zusätze in WSDL 2.0, z Die Sicherheit von Operationen, die Beschreibung von -Nachrichten, die sich auf andere Web-Services beziehen, und die verbesserte HTTP-Bindung machen es jetzt möglich, Webdienste im Stil REST zu beschreiben. ", Arthur Ryman .

3

RestDoc versucht, ein einfaches Dokumentationsframework für REST -Ressourcen zu erstellen. Ein Browser ist über restdoc-renderer verfügbar.

Es bietet auch Java-Annotationen , um die sofortige Erstellung von RestDoc-Dokumentationen zu ermöglichen. Implementierungen sind für Jersey 1.x und JAX-RS 2.0 verfügbar.

3
koppor

Wie @GiuliaDiFederico sagte, "natürlich ist es möglich" (mit WSDL2), zeigt es einen guten Quelllink zum Vorgehen. Andererseits hat @DonalFellows die Verwendung von WSDL nicht gefördert ...

Ich denke, die Verwendung von WSDL ist eine Frage von

  • FORMALIZATION LEVEL : Mit WSDL können Sie alle relevanten Details Ihres Webservices formeller ausdrücken. 
  • STABILITY LEVEL : Wenn Sie langfristige Verträge benötigen und das Risiko von Änderungen in der Umgebung, in der Ihr Webservice verfügbar ist, vermeiden, hilft WSDL dabei, Stabilität zu gewährleisten.
  • BENÖTIGUNG FÜR STANDARDS : Wenn Kunden Webservices bevorzugen, die als "standard-compliant" bezeichnet werden können, verwenden Sie Standards. Der einzige ist W3C, und W3C erfordert XML, SOAP und WSDL.
3
Peter Krauss

Ich denke, WSDL eignet sich nicht für REST und WADL ist nicht notwendig. HTTP macht bereits verfügbar, was WADL in einer separaten Datei beschreiben könnte. Zum Beispiel gibt der Header "Allow" die erlaubte HTTP-Methode zurück, und bei der Inhaltsverhandlung wird das richtige Format ausgewählt.

1
deamon

WADL ist nicht erforderlich. Wenn jedoch in einer Anwendung bereits Client-Side-Code vorhanden ist und Sie einen neuen Rest-Aufruf durchführen möchten, sollten Sie wadl zum Generieren des clientseitigen Java-Stub (POJO) verwenden. Auf diese Weise werden clientseitige POJOs mit dienstseitigen POJOs synchronisiert. Wenn Sie beispielsweise den EJB/SOAP-Serviceabruf in einer vorhandenen Anwendung durch den Serviceabruf "Rest" ersetzen, ist die Verwendung von WADL sehr sicher und empfehlenswert.

Sie können clientseitige Java-Stubs mit Wadl2Java mit dem Maven-Plugin aus WADL generieren.

0
R.Ranjan