Tout d'abord : officiellement, la question correcte serait web services + WSDL + SOAP
vs REST
.
Car, bien que le service web est utilisé au sens large, lorsque l'on utilise le protocole HTTP pour transférer des données. données au lieu de pages web, officiellement c'est une forme très spécifique de cette idée. Selon la définition, REST n'est pas un "service web".
En pratique, cependant, tout le monde ignore cela, alors ignorons-le aussi.
Il y a déjà des réponses techniques, alors je vais essayer de fournir quelques intuitions.
Imaginons que vous souhaitiez appeler une fonction dans un ordinateur distant, implémentée dans un autre langage de programmation (on parle souvent de appel de procédure à distance/RPC ). Supposons que cette fonction puisse être trouvée à une URL spécifique, fournie par la personne qui l'a écrite. Vous devez (en quelque sorte) lui envoyer un message et obtenir une réponse. Il y a donc deux questions principales à considérer.
- Quel est le format du message que vous devez envoyer ?
- comment le message doit-il être transmis dans les deux sens
Pour la première question, la définition officielle est WSDL . Il s'agit d'un fichier XML qui décrit, dans un format détaillé et strict, quels sont les paramètres, quels sont leurs types, leurs noms, leurs valeurs par défaut, le nom de la fonction à appeler, etc. Un exemple de WSDL montre ici que le fichier est lisible par l'homme (mais pas facilement).
Pour la deuxième question, il existe plusieurs réponses. Cependant, la seule utilisée en pratique est SOAP . Son idée principale est d'envelopper le XML précédent (le message réel) dans un autre XML (contenant des informations d'encodage et d'autres éléments utiles), et de l'envoyer via HTTP. La méthode POST du HTTP est utilisée pour envoyer le message, puisque il y a toujours un corps .
L'idée principale de cette approche est que vous faire correspondre une URL à une fonction c'est-à-dire une action . Ainsi, si vous avez une liste de clients dans un serveur, et que vous voulez en afficher/mettre à jour/supprimer un, vous devez avoir 3 URL :
-
myapp/read-customer
et dans le corps du message, passez l'id du client à lire.
-
myapp/update-customer
et dans le corps, passez l'id du client, ainsi que les nouvelles données
-
myapp/delete-customer
et l'identifiant dans le corps
L'approche REST voit les choses différemment. Une URL ne doit pas représenter une action, mais une chose (appelé ressource dans le jargon REST). Puisque le protocole HTTP (que nous utilisons déjà) supporte les verbes, utiliser ces verbes pour spécifier les actions à exécuter sur la chose.
Donc, avec l'approche REST, le client numéro 12 serait trouvé sur l'URL myapp/customers/12
. Pour consulter les données du client, vous tapez l'URL avec une requête GET. Pour les supprimer, le même URL, avec un verbe DELETE. Pour le mettre à jour, encore une fois, le même URL avec un verbe POST, et le nouveau contenu dans le corps de la requête.
Pour plus de détails sur les exigences qu'un service doit remplir pour être considéré comme véritablement RESTful, voir le site Web de la Commission européenne. Modèle de maturité de Richardson . L'article donne des exemples et, surtout, explique pourquoi un (soi-disant) service SOAP est un service REST de niveau 0 (bien que le niveau 0 signifie une faible conformité à ce modèle, il n'est pas choquant et reste utile dans de nombreux cas).
219 votes
Il y a une analogie avec une lettre que j'ai beaucoup aimée à propos de SOAP et REST, avec SOAP, vous utilisez une enveloppe, avec REST, c'est une carte postale Il est donc évident que le protocole SOAP entraîne des frais supplémentaires : plus de bande passante (plus de papier), travail supplémentaire pour les deux parties (enveloppement et désencapsulation). Mais cela ne signifie pas que REST n'est pas aussi sûr que SOAP puisque vous pouvez utiliser HTTPS (pensez-y comme si vous remplaciez le facteur par quelqu'un qui ne parle que des langues étrangères).
3 votes
spf13.com/post/soap-vs-rest
0 votes
nishantshukla001webservices.blogspot.in/2015/09/
11 votes
"À bien des égards, le World Wide Web lui-même, basé sur HTTP, peut être considéré comme une architecture basée sur REST."
4 votes
Conformément à Modèle de maturité de Richardson qui décompose les principaux éléments d'une approche REST en trois étapes, SOAP est le niveau 0 de REST.
0 votes
Différence entre SOAP et REST dans le cadre d'une application de commerce mobile (informations détaillées) blog.contus.com/rest-api-vs-soap-api-for-mobile-ecommerce-app
0 votes
Cela pourrait être utile community.jivesoftware.com/community/developer/plugins/blog/