REST (Representational State Transfer) is an architectural style for designing distributed systems.
REST
REST (Representational State Transfer) is an architectural style for designing distributed systems. It provides a set of guidelines for structuring communication between components, typically across a network. REST emphasizes a stateless, resource-oriented approach where operations are performed on uniquely identifiable resources, represented as URLs, using a standard set of HTTP methods.
Also known as : RESTful architecture, REST design principles.
Comparisons
-
REST vs. Client-Server Architecture : REST builds upon client-server architecture but adds specific constraints like statelessness and a uniform interface.
-
REST vs. CRUD : While REST maps closely to CRUD operations (Create, Read, Update, Delete), it includes additional guidelines for scalable and stateless interactions.
Pros
-
Uniform interface : Ensures consistent communication standards.
-
Stateless design : Simplifies server-side processing by keeping interactions independent.
-
Cacheability : Enhances performance through HTTP caching mechanisms.
Cons
-
Lacks built-in state management : Statelessness means REST does not inherently handle sessions.
-
Over-fetching or under-fetching data : Can occur if APIs are not designed efficiently.
Example
Imagine a REST-based system for an online library:
-
A book resource might be represented by the URL: http://example.com/books/1
-
To update the resource (e.g., change the title of the book), the client would issue an HTTP PUT request:
Request :
PUT /books/1 HTTP/1.1
Host: example.com
Content-Type: application/json
{
"title": "Updated Title"
}
Response:
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 1,
"title": "Updated Title",
"author": "Original Author"
}
