REST (REpresentational State Transfer) is an architecture for communications between computer systems. They system which is using this architecture is called RESTComplaint System / RESTful System.
In RESTful System Client and Server are independent of each other and are usually stateless.
Independence (Separation of Client and Server):
In RESTful Systems client and server does not know each other and are independent to each other.
We can update client at any time without updating server and also can update server without updating clients. This will not affect the functionality of wither client or server.
Here Client and Server acts as separate module as long as they know the format of communications.
In RESTComplaint System we are keeping separate user interface from the data storage concerns. Our user interface is flexible across multiple platforms and the scalability of the server can be improved by simplifying the server components.
In RESTful System server is not maintaining the current state of client. This mean whenever client send request to the server that request should contain state of the client. Session state is controlled entirely through client only.
This way both server and client can understand any message received (Get/Post) without knowing the previous message.
Due to statelessness nature of RESTful system, it improves visibility, reliability and scalability.
Visibility can be improved because the monitoring system does not have to look beyond a single request to understand the full nature of the request.
Improves scalability as each request is independent of each other which mean each request can be handle by any of the server.
Reliability can be improved as each request is independent and therefore can be recovered easily in case of any failure.