SOAP vs REST:
Direct comparison of SOAP and REST are not possible because the SOAP is a protocol and REST an architectural style. It is not correct to call REST any HTTP API that isn’t SOAP.
Most important difference between SOAP and REST is the way of coupling between client and server.
A SOAP client will be tightly coupled to the server and works like a custom desktop application. This is like a contract between client and server. If either side changes anything then it may break everything. We need constant updates following any change. In SOAP, the client needs previous knowledge on everything he will be using, or it won’t even begin the interaction. A SOAP client cannot be extended by code-on-demand supplied by the server itself.
A REST client is more like a browser. It’s a generic client that knows how to use a protocol and standardized methods, and an application has to fit inside that. We don’t violate the protocol standards by creating extra methods. We leverage on the standard methods and create the actions with them on our media type. This result into less coupling. A client is supposed to enter a REST service with zero knowledge of the API, except for the entry point and the media type. A REST client can be extended by code-on-demand supplied by the server itself.
SOAP | REST |
SOAP refers to Simple Object Access Protocol. It serves as a standard protocol for web service creation. | REST refers to Representational State Transfer. It is an architectural style for web service creation. |
SOAP is based on contract between client and server applications which results into tight coupling. | It does not follow any contract between client and server that’s why loosely coupled. |
For exposing business logic it uses service interfaces. It requires more bandwidth and resource. | For exposing business logic it uses URI (Uniform Resource Identifiers). It requires less bandwidth and resource. |
It support XML data format only. | It support many data formats like Plain text, HTML, JSON, etc. |
Java API for SOAP web service is JAX-WS. | Java API for RESTFUL web service is JAX-RS. |
SOAPUI can be used for testing SOAP web services. | Browsers and extensions such as Chrome postman are used for testing REST web services. |
It defines its own security and uses WSDL contract for binding web services and client application. | It does not have its own security methods and does not defined any contract between client application and server. |