Pourquoi le service web basé sur SOAP N'est-il pas RESTful?

Je comprends que RESTful est un style d'architecture,mais qu'est-ce qui fait que le service web basé sur SOAP ne compte pas pour RESTful?

Il n'est pas clair pour moi quels points ci-dessous (de Wikipedia), n'est pas conforme par SOAP.

  1. Client-serveur
  2. Apatrides
  3. Cache
  4. système en couches
  5. Code sur demande (facultatif)
  6. interface uniforme
    • Identification des ressources
    • Manipulation des ressources à travers ces représentations
    • messages Auto-descriptifs
    • Hypermédia comme le moteur de l'état de l'application

EDIT : je viens de tomber sur CE qui le résume assez bien.

REST n'est pas RPC, RPC dit, " définir certaines méthodes qui font quelque chose" alors que REST dit, " définir certains ressources et ils auront ces méthode". C'est une différence subtile mais vitale, lorsqu'on lui donne un URI tout le monde sait qu'il peut interagir avec elle via les prédéfinis ensemble de méthodes et norme de réception Réponses HTTP en retour. Donc, étant donné http://www.peej.co.uk/ je sais que je peux émettre un GET sur elle et recevoir quelque chose de significatif en arrière. Je puis peut essayez un mettre sur elle pour le changer et recevoir un code D'erreur HTTP significatif puisque je ne suis pas autorisé à m'immiscer avec elle.

43
demandé sur bryantsai 2009-12-23 07:53:41

7 réponses

SOAP suit le modèle RPC. Une API SOAP décrit une série de méthodes, ainsi que leurs paramètres et leurs valeurs de retour, que vous pouvez appeler à partir de votre code. Il y a une étape de marshaling qui convertit cela en sa représentation réseau.

REST n'est jamais RPC. Une API REST décrit une série de ressources, ainsi qu'un ensemble de verbes (typiquement HTTP GET, POST, PUT, DELETE) qui peuvent agir sur eux.

Pour répondre directement à votre question: SOAP viole principalement le point 6 (ce n'est pas le cas fournir un ensemble uniforme de verbes à travers les API). Il viole également le point 2 (le serveur peut maintenir l'État pour chaque client), et par conséquent le point 3 (l'état empêche la mise en cache).

45
répondu Trevor Johns 2009-12-23 08:28:43

REST et SOAP ne sont pas des concepts équivalents.

Reste:

  • dépend d'un protocole de transport (HTTP).
  • utilise pleinement les fonctionnalités spécifiques de ce protocole (verbes GET, POST, PUT, DELETE, cache, en-têtes et codes d'erreur prédéfinis).
  • ne Dit rien sur le format des messages échangés. Cependant, puisque le verbe HTTP et L'URL définissent déjà l'action à effectuer, le corps du message doit donc contenir uniquement les données.
  • Message la sécurité est fournie par le protocole de transport (HTTPS), et est point à point uniquement. Si vous voulez sécuriser le message de bout en bout, vous devez le faire vous-même.
  • initialement destiné aux opérations CRUD simples sur les objets.

Savon:

  • indépendant du protocole de transport (peut être HTTP, FTP, TCP, UDP, canaux nommés, mémoire partagée ou même email).
  • nécessite seulement que le protocole de transport puisse envoyer et recevoir du texte (par exemple sur HTTP, seul le verbe POST est utilisé).
  • définit strictement le format des messages transmis d'avant en arrière. Un message SOAP contient les données, l'action à effectuer, les en-têtes, et les détails de l'erreur en cas d'échec.
  • la sécurité des messages est assurée par les normes WS-* et est de bout en bout.
  • initialement destiné aux appels RPC arbitraires.

Les points 2 et 3 des listes ci-dessus sont les principaux points d'incompatibilité.

53
répondu Christian Hayter 2013-03-21 08:25:40

L'un des objectifs de REST est la cachabilité, car la ressource doit être identifiée par l'uri (chaîne de requête). Dans soap, la requête est publiée, par conséquent, pour différentes requêtes, vous avez le même uri et la ressource ne peut donc pas être identifiée de manière unique par l'ur

5
répondu Piotr Zolnierek 2009-12-23 08:30:53

REST n'est conforme qu'au protocole http.

4
répondu Pierreten 2009-12-23 05:00:46

Reposant : REST est un style architectural pour construire un service web en utilisant le protocole HTTP, où les services web sont traités comme des ressources et certaines méthodes HTTP de base comme GET, POST, DELETE sont utilisées identifier des mesures standard sur les ressources. L'API Web RESTful (également appelée service Web RESTful) est une API Web implémentée en utilisant HTTP et les principes REST.

Savon : SOAP, initialement défini comme Simple Object Access Protocol, est une spécification de protocole pour l'échange informations structurées sous forme XML.

2
répondu Android Genius 2014-09-05 07:58:18

Protocole SOAP: SOAP est un protocole qui signifie qu'il a une structure définie.

  1. POST: la requête SOAP nécessite toujours un corps HTTP, d'où la méthode HTTP est POST. Plus sur les méthodes HTTP dans un futur POST (celles-ci sont très pertinentes dans REST), mais pour l'instant supposons que c'est toujours POST dans le cas de SOAP
  2. action SOAP: signifie vide, intention dans L'URI de la requête HTTP.
  3. Content-Type: SOAP utilise XML comme langage de communication et donc c'est toujours texte / xml
  4. avec L'espace de noms XML (xmlns) est nécessaire pour indiquer qu'il s'agit d'une requête SOAP.
  5. {[3] } est l'élément soap racine qui décrit la requête et la réponse.

La conception de L'API RESTful implique de casser le système en termes de ressources et de fournir un accès à ces ressources via des points de terminaison (également appelés opérations) définis sur les URI de base du service web. L'accès est effectué à L'aide de méthodes HTTP standard et contrôlé par un mécanisme d'authentification. Configuration pour l' la ressource est fournie et obtenue par requête et réponse avec des codes D'état HTTP communiquant l'état. 1. Les ressources sont les entités qui existent dans le système en cours de RESTful. Par exemple, dans le cas d'un site de blogs, ceux-ci peuvent être les blogs, les messages et les commentaires. 2. Les points de terminaison ou les opérations fournissent un mécanisme par lequel ces ressources peuvent être accédées. Par exemple, le point de terminaison pour lister tous les messages de blog sur un blog particulier serait un GET on /blogs/{blogId}/posts. 3. Base Les URI définissent l'emplacement de l'uri web où les ressources sont disponibles via les points de terminaison. Pour prendre un exemple réel, pour Google blogger, le base_uri est https://www.googleapis.com/blogger/v3 . 4. Les méthodes HTTP sont l'endroit où réside la simplicité de REST. Dans la conception de L'API RESTful, les opérations sur les ressources sont effectuées via les méthodes HTTP standard, principalement GET, POST, PUT et DELETE . D'autres méthodes HTTP - OPTIONS, HEAD, PATCH sont également utilisées dans certains cas.

2
répondu somya4 jain4 2015-12-07 05:53:41

SAVON vs Services Web REST

1) SOAP est un protocole alors que REST est un style architectural.

2) SOAP ne peut pas utiliser REST car c'est un protocole alors que REST peut utiliser les services web SOAP car c'est un concept et peut utiliser N'importe quel protocole comme HTTP, SOAP.

3) SOAP utilise des interfaces de services pour exposer la logique métier alors que REST utilise L'URI pour exposer la logique métier.

4) SOAP définit les normes à suivre strictement alors que REST ne définit pas trop beaucoup de normes comme le savon.

5) SOAP nécessite plus de bande passante et de ressources que REST alors que REST nécessite moins de bande passante et de ressources que SOAP.

6) SOAP définit sa propre sécurité tandis que RESTful web services hérite des mesures de sécurité du transport sous-jacent.

7) SOAP autorise uniquement le format de données XML tandis que REST autorise différents formats de données tels que le texte brut, HTML, XML, JSON, etc.

Les services web RESTful sont fortement préférés à SOAP web service.

1
répondu themoonraker13 2015-05-04 12:32:29