SOAP has strict communication with the server; requests are provided with an explanatory programmed envelope. REST facilitates client-server communication; the request is based on the way it is formulated.
REST and SOAP are differently handling data transmission over the net. REST mostly uses HTTP and JSON to lighten the payload whereas SOAP relies on XML.
The SOAP client needs full knowledge about the application. The REST API does not require the client to know the application interface to initiate interaction.
|Function||REST APIs access a resource for data (a URI) As an architectural style REST is more data-driven.||SOAP APIs perform an operation. As a standardized protocol for transferring structured information it is more function-driven.|
|Error handling||Rest doesn’t have a standard messaging system and can only address communication failures by retrying.||SOAP has successful/retry logic built in and provides end-to-end reliability even through SOAP intermediaries.|
|Data format||REST permits many different data formats including plain text, HTML, XML, and JSON. Using JSON as its data format makes it compatible with browsers.||SOAP only uses XML.|
|Interface||REST APIs use a single uniform interface. The applications all interface in the same way, through the same portal.||SOAP uses a service interface to expose certain aspects of an application’s business logic on a server.|
|Security||REST can use the secure version of the HTTP protocol, HTTPS. It supports SSL for end-to-end security.||SOAP supports SSL and WS-Security, which is a bit more comprehensive than SSL and excellent at the transport level. SOAP security level is more ideal for integration with enterprise-level security tools.|
|Data cache||REST calls can be cached||SOAP-based calls cannot be cached.|
|ACID (atomicity, consistency, isolation, durability||Lacks ACID compliance||SOAP has built-in ACID compliance that reduces anomalies and protects the integrity of a database by prescribing exactly how transactions can interact with the database|
Developers are usually inclined to choose RESTful architecture for web services unless there is a need for more resources, higher security and more requirements that brings forward a SOAP as a better choice, for example, for enterprise applications.