SOAP vs REST : les principales différences ?

REST et SOAP sont des éléments souvent comparés l'un à l'autre dans la conception des applications client-serveur, mais c'est une erreur.

REST et SOAP sont des éléments souvent comparés l'un à l'autre dans la conception des applications client-serveur, mais c'est une erreur. En effet, ces éléments ne sont pas d'un même type : SOAP est un protocole tandis que REST est un style d'architecture.

La différence majeure entre ces 2 éléments est le degré de liaison entre le client et le serveur. Un client développé avec le protocole SOAP ressemble à un logiciel d'ordinateur, car il est étroitement lié au serveur. Si une modification est effectuée d'un côté ou de l'autre, l'ensemble peut ne plus fonctionner. Il faut effectuer des mises à jour du client s'il y a des changements sur le serveur et vice-versa.

Un client de type REST sait utiliser un protocole et des méthodes standardisées. Son application doit rentrer dans ce modèle. On ne crée pas de méthodes supplémentaires, on utilise les méthodes standardisées que l'on développe pour le type de media dont on a besoin. Il y a en conséquence beaucoup moins de couplage entre le client et le serveur : un client peut utiliser un service de type REST sans aucune connaissance de l'API. A l'inverse, un client SOAP doit tout savoir des éléments qu'il va utiliser pendant son interaction avec le serveur, sinon cela ne fonctionnera pas.

Par ailleurs, REST possède des caractéristiques spécifiques qui le différencient de SOAP. REST est indépendant d'un protocole. On peut utiliser aussi bien le protocole HTTP que FTP, tant qu'il s'agit d'un protocole possédant un schéma standard pour une URI. REST est aussi standard que les éléments que vous utilisez pour développer votre application. Si vous utilisez le protocole HTTP, alors certaines parties comme l'authentification ou encore la sécurité seront standardisées, car elles le sont avec HTTP.

Si vous souhaitez développer une application respectant pleinement REST (on appelle cela une application RESTful), il faut savoir que votre client ne doit connaître que le point d'entrée de l'API ainsi que le type de données qui est attendu. Les API fournissant une documentation complète avec les schémas d'URL ne sont donc pas RESTful, car, en donnant cette documentation, ils informent le client sur les possibilités de l'API à un moment particulier de son existence. Une modification de l'API doit donc être documentée sinon cela peut conduire à des dysfonctionnements.

Divers