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.
Réponses
Trop de publicités?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.
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.
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 ;)
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.
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.