101 votes

Services RESTful - Équivalent WSDL

J'ai lu sur le REPOS et le SAVON, et de comprendre pourquoi la mise en œuvre de REPOS peut être bénéfique sur l'aide d'un protocole SOAP. Cependant, je ne comprends toujours pas pourquoi il n'y a pas le "WSDL" équivalent dans le RESTE du monde. J'ai vu des posts disant qu'il y a "pas besoin" pour le WSDL ou qu'elle est redondante Dans le RESTE du monde, mais je ne comprends pas pourquoi. N'est-il pas toujours utile de programmation pour la lier à une définition et à créer des classes de proxy au lieu de saisir manuellement le codage? Je ne veux pas entrer dans un débat philosophique, à la recherche de la raison pour laquelle il n'existe pas de fichier WSDL dans le REPOS, ou pourquoi il n'est pas nécessaire. Merci.

47voto

joschi Points 4278

Le langage de description d'application Web (WADL) est fondamentalement l'équivalent du WSDL pour les services RESTful, mais une controverse persiste quant à la nécessité de procéder de la sorte.

Joe Gregorio a écrit un article intéressant sur ce sujet qui mérite d’être lu.

19voto

Darrel Miller Points 56797

WSDL décrit les points de terminaison du service. RESTE les clients ne devraient pas être couplé à des points de terminaison de serveur (c'est à dire ne doit pas être au courant d'une Url à l'avance). RESTE les clients sont couplés sur les types de médias qui sont transférées entre le client et le serveur.

Il peut faire sens pour générer automatiquement les classes sur le client pour s'enrouler autour de la retourné types de médias. Cependant, dès que vous commencez à créer des classes de proxy à travers le service interactions de commencer à obscurcir la HTTP interactions et risque de dégénérer en arrière vers un modèle RPC.

8voto

Eduardo Fabricio Points 306

RSDL vise à faire de repos, comme un hypermédia, en d'autres termes, il a plus d'informations qu'un descripteur de service comme WSDL ou WADL. Par exemple, il dispose de l'information sur la navigation, comme hypertextes et hyperliens.

Par exemple, étant donné un ressources actuelles, vous disposez d'un ensemble d'os des liens vers un autre ressources connexes.

Cependant, je n'ai pas trouver le Repos des Clients qui prend en charge ce format ou de Repos des Solutions de Serveur avec une fonctionnalité automatique de la générer.

Je pense qu'il y a un long chemin pour une conclusion à ce sujet. Voir le code HTML longue histoire et le W3C vs Navigateurs lol.

Pour plus de détails au sujet Reste comme Hypermédia regarder: http://en.wikipedia.org/wiki/HATEOAS

Remarque : Roy Fielding a critiqué ces tendances dans les Api Rest sans hypermidia approche: http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven

Ma Conclusion : Maintenant, un jour, WADL est plus commun que le Repos et l'Intégration des Frameworks comme Chameau CXF prend déjà en charge WADL ( de générer et d'exploiter ), parce qu'il est semblable WSDL, donc plus facile à comprendre dans ce processus de migration ( SAVON pour les MAINS ).

Nous allons voir les prochains chapitres ;)

6voto

richard Points 79

Il existe un langage de description de service reposant (RSDL) équivalent à WSDL. L'URL ci-dessous décrit sa pratique http://en.wikipedia.org/wiki/HATEOAS et http://en.wikipedia.org/wiki/RSDL . Le problème est que nous disposons de nombreux outils pour générer du code de WSDL à Java, ou inversement. Mais je n'ai trouvé aucun outil pour générer du code à partir de RSDL.

3voto

roder Points 321

WSDL est extensible pour permettre la description des points de terminaison et de leurs messages, indépendamment de ce que les formats de message ou les protocoles réseau sont utilisés pour communiquer

Cependant, RESTE utilise le protocole réseau en utilisant le protocole HTTP verbes et les URI pour représenter des objets dans l'état.

Fichiers wsdl vous dire à cet endroit, si vous envoyez ce message, vous devrez effectuer cette action et d'obtenir ce format en arrière.

Au RESTE, si j'ai voulu créer un nouveau profil, je voudrais utiliser le verbe POST avec un JSON corps ou serveur http variables décrivant mon profil à l'URL /profile

POST doit retourner un côté serveur ID généré en utilisant le code d'état 201 CREATED et l'en-tête Location: *new_profile_id* (par exemple 12345)

Je peux effectuer des mises à jour modification de l'état d' /profile/12345 en utilisant le verbe HTTP POST, disent de changer mon adresse e-mail ou numéro de téléphone. Évidemment modification de l'état de l'objet distant.

GET serait de retour le statut actuel de l' /profile/12345

PUT est généralement utilisé pour le côté client ID généré

DELETE, évident

HEAD, obtient le statut sans avoir à retourner le corps.

Avec le REPOS, il devrait être auto-documenter par le biais d'un API et donc plus facile à utiliser.

C'est un grand article sur le REPOS. - Il vraiment m'aider à comprendre aussi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X