Sto cercando di capire il diverso tra SOAP e REST quindi una di queste differenze è. SOAP espone l'operazione che rappresenta la logica e REST espone le risorse che rappresentano i dati. Cosa significa? Qualcuno può chiarirlo con esempi?
POST /InStock HTTP/1.1
Host: www.example.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body xmlns:m="http://www.example.org/stock">
<m:GetStockPrice>
<m:StockName>IBM</m:StockName>
</m:GetStockPrice>
</soap:Body>
</soap:Envelope>
La risposta SOAP:
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body xmlns:m="http://www.example.org/stock">
<m:GetStockPriceResponse>
<m:Price>34.5</m:Price>
</m:GetStockPriceResponse>
</soap:Body>
</soap:Envelope>
Si noti che stai trasmettendo i dati a un endpoint SOAP e restituisce i dati in risposta. L'azione è governata interamente dall'XML che definisce il protocollo SOAP. Si noti inoltre che viene utilizzato un POST, quindi questo potrebbe, in effetti, essere un endpoint in stile REST.
REST significa comprendere che gli endpoint rappresentano risorse e alcuni meccanismi che promuovono tale comprensione. Gli endpoint REST sono completamente agnostici sul tipo di dati che vengono passati avanti e indietro tra loro; puoi avere dati SOAP, dati XML associati ad AJAX, JSON, o praticamente qualsiasi altra cosa.
Ulteriori letture
Che cos'è REST?
Esempio SOAP
Come ho spiegato REST a mia moglie
SOAP segue il paradigma Remote Procedure Call. REST segue, bene il paradigma REST. Una domanda migliore è la differenza tra SOAP e HTTP (SOAP usa HTTP completamente sbagliato)
In termini semplici RPC è quando un client effettua una chiamata attraverso la rete a un server per emettere un comando sul server. Quindi un cliente potrebbe dire "Hey server, aggiorna il prezzo delle azioni per essere 10 euro a share" o "Hey server, calcola la sequenza dei fibonati"
Un problema con RPC è che accoppia strettamente il client e il server. Il client deve sapere quali sono le chiamate che può fare sul server e, se aggiorni il server, devi aggiornare anche i client, anche se stai semplicemente cambiando il nome di una procedura remota.
REST è un modo diverso di pensare alla comunicazione tra server che implementa severe restrizioni che aumentano ironicamente la flessibilità.
Con REST la comunicazione tra client e server riguarda SOLO il trasferimento dello stato di una risorsa tra il client e il server. Il protocollo HTTP è un protocollo REST e noterai che ci sono solo una manciata di comandi effettivi che puoi chiamare sul sever (GET, PUT, POST, DELETE ecc.). Non puoi (o non devi) chiedere al server di eseguire altri comandi.
In REST un client dice "Ehi, voglio fare qualcosa con la risorsa X, quindi dammi una copia di esso". Il client quindi fa ciò che vuole e poi dice al server "Ehi, ho finito con l'aggiornamento di questa risorsa, ecco il suo nuovo stato per favore aggiorna te stesso"
Il vantaggio di questo è che client e server devono conoscere molto poco l'uno dell'altro, hanno solo bisogno di sapere che entrambi supportano il protocollo REST come HTTP 1.1, e devono capire il tipo di contenuto delle risorse, a almeno sul lato client (a volte anche sul lato server se vuoi che il server convalidi il nuovo stato prima di salvarlo).