A RESTful API is an application programming interface (API) which takes the advantage of HTTP protocol methods to fetch/alter data that is not tied to any particular resources/methods thus providing a great deal of flexibility in terms of data accessibility.
Restful API can handle multiple types of calls, return varied data formats to meet the needs of very diverse customers to ease development and increase in client adoption. This means that developers have no need to install additional software or libraries when creating a RESTful API.
RESTful web services like other programming skills are partly art & partly science which is widely used for distributed hypermedia systems and was first presented by Roy Fielding in 2000 in his famous Dissertation.
What is REST?
Is the acronym for Representational State Transfer. It is an architectural style that defines a set of constraints and approach to communications used for creating web services. RESTful web services, provide interoperability between computer systems on the Internet.
For example, each URL is called a request made to a resource’s URI which elicits a response with a payload formatted in either HTML/ XML/ JSON. The response can confirm if the stored resources are altered, and the response can provide hypertext links to other related resources/collections of resources where alterations happened.
How RESTful APIs work?
breaks down a transaction to create a series of small modules, each of which addresses a particular underlying part of the transaction, thereby providing developers with a lot of flexibility.
It uses GET to retrieve a resource; PUT to change the state of or update a resource; POST to create that resource; and DELETE to remove it.
As the calls are stateless, nothing can be retained by the RESTful service between executions. Stateless components can be freely redeployed if something breaks, and can be scaled to accommodate payload changes.
REST is guided by a number of constraints which I had mentioned of, now let’s dive a little deeper to look what are the main constraints in using REST design of API.
6 key constraints for deploying RESTful API:
Client-Server separability from each other and each of them is allowed to evolve individually. Thereby improving the portability of the user interface across multiple platforms and scalability by simplifying the server components in RESTful API.
Stateless means that client-server calls can be made independently of one another. RESTful API cannot take advantage of any stored resource on the server and each call contains all the necessary data embedded to complete itself successfully. Therefore session state is kept entirely on the client.
Cacheable as a RESTful API can increase request overhead by handling large payloads of incoming and outbound calls, a REST API should be designed to encourage the storage of cacheable data.
Uniform Interface is the key to the decoupled client from the server. In order to obtain a uniform interface, REST is defined by four interface constraints:
- Identification of resources
- Manipulation of resources through representations
- Self-descriptive messages
- Hypermedia as the engine of application state(HATEOAS)
This allows independent evolution of the application without having the application’s services, or models and actions, tightly coupled to the API layer itself.
Hierarchical Layered System of RESTful API architecture allows it to create a more scalable and modular application such that each component cannot “see” beyond the immediate layer with which they are interacting.
Code On-Demand in RESTful API allows client functionality to be extended by downloading and executing code/applets via the API for use within the application. Therefore reducing the number of features required to be re-implemented.
Now that we know the constraint guidelines in using REST API, the next thing around which RESTful API revolves is RESOURCE.
What is Resource?
A resource is the key abstraction of information in REST such as a document or image, a temporal service, a collection of other resources, a non-virtual object, etc.
- REST uses a resource identifier to identify the particular resource involved in an interaction between components.
- The state of the resource at any particular timestamp is known as resource representation which is comprised of data, metadata describing the data and hypermedia links which can help the clients in transition to next desired state.
- The data format of a representation is known as a media type. A RESTful API looks like Hypertext/Hypermedia, meaning the simultaneous presentation of information & controls such that the user obtains choices and selects actions.
REST and HTTP are not the same !!
REST intend to make the web (internet) more streamline and standard whereas HTTP is just the protocol used to retrieve resources.
HTTP method uses :
GET /user/1/friends (return related friends of the user with ID 1)
POST /user (create a new user record)
PUT /user/1 (update record for the user with ID 1)
DELETE /user/1 (delete user with ID 1)
Now we have an overall idea of RESTful API, let us check out some practical uses of it.
Where is the RESTful API used?
Some of the popular RESTful API models are:
- Amazon Simple Storage Service
- Cloud Data Management Interface
- OpenStack Swift
As the Cloud-based industry progresses, the future scope of creating a REST API becomes more concrete with emerging best practices. Cloud computing and microservices architecture are making use of RESTful API design to experience seamless API that is most preferred by customers today.