time to read 4 min read
What is REST API

What is REST API?

Have you ever wondered how you can order a pizza online, check the weather forecast, or stream your favorite show on Netflix? If so, you’ve probably used a REST API without even knowing it. REST stands for Representational State Transfer, and it’s a way of communicating between different systems on the web. 

In this article, we’ll explain what a REST API is, how it works, and why it’s so important in today’s world. By the end of this article, you’ll be able to impress your friends with your knowledge of REST APIs, and maybe even order a pizza faster.

What is an API?

An API, or Application Programming Interface, is a set of rules and instructions that allows one system to interact with another system. For example, when you use an app on your phone, the app uses an API to communicate with the server and get the data it needs. An API defines what information can be exchanged, how it can be exchanged, and what format it should be in. An API makes it easier for developers to create applications that can work with different systems and platforms.

Representation of REST flow

In the context of REST API, a client is an application or system that sends requests to a server to access or modify data. The client can be a web browser, a mobile app, or another server. A resource is a piece of data or a functionality that is accessible through the REST API. Resources are identified by unique URLs and can be accessed or modified using HTTP methods. Examples of resources include users, products, orders, and bookings. Each resource has a specific representation, usually in JSON format, that is exchanged between the client and the server.

A REST API is a way of exchanging data between a client and a server using HTTP methods. The client requests data or performs actions on the server using GET, POST, PUT, or DELETE. The server responds with a status code and a message in JSON format. The status code indicates the success or failure of the request, and the message provides the data or the error details. The client and the server follow a standard format and protocol for communication. The image below shows an example of a REST API flow for booking a hotel room.

Representation of REST flow

Guiding Principles of REST

The guiding principles of REST API are a set of best practices and design principles that help ensure a consistent and efficient API. These principles are essential for creating a scalable, maintainable, and user-friendly API.

Stateless

Stateless means that the server does not store any information about the state of the client or the session. Each request from the client contains all the information that the server needs to process it, such as authentication, parameters, and headers. The server does not rely on any previous or subsequent requests from the same client. This makes the server more scalable, reliable, and secure, as it does not have to manage or synchronize any state information. It also simplifies the client-server communication, as the client does not have to maintain any state information either.

Client-Server

The client-server principle of REST is based on the separation of concerns between the client and the server. The client is responsible for the user interface and the presentation of data, while the server is responsible for the data storage and processing. This separation allows for greater flexibility and scalability, as the client and server can be developed and deployed independently of each other. It also allows for different clients, such as web browsers, mobile apps, and other servers, to access the same server and resources. The client-server communication is done through a standardized interface, such as HTTP, which ensures interoperability and consistency.

Cacheable

Cacheable means that the server can indicate to the client whether a response can be cached and for how long. This allows the client to reuse the response for subsequent requests, reducing the need for additional server requests and improving the performance and efficiency of the client-server communication. Caching can be done at different levels, such as the client, intermediate proxies, and the server. The server can use HTTP headers, such as Cache-Control and ETag, to control the caching behavior and validate the freshness of the cached response. Caching is an important aspect of REST, as it helps to reduce the load on the server and improve the scalability and responsiveness of the API.

Layered System

Layered means that the client-server communication can be done through multiple intermediate components, such as proxies, gateways, and firewalls, that provide additional functionality and abstraction. The client does not need to know the details of the server or the intermediaries, as long as it can communicate with the server through a uniform interface. The server does not need to know the details of the client or the intermediaries, as long as it can respond to the client’s requests. This allows for greater modularity, security, and scalability, as the intermediaries can handle tasks such as load balancing, caching, encryption, and authentication. Layering also enables the evolution of the system, as new components can be added or removed without affecting the existing ones.

Code on Demand (Optional)

Code on Demand (optional) means that the server can provide executable code, such as JavaScript or applets, to the client to extend its functionality and behavior. This allows the server to dynamically adapt the client’s behavior to changing requirements and conditions, without the need for the client to be updated or redeployed. Code on Demand is optional, as not all RESTful APIs need to provide executable code, and it depends on the specific use case and requirements. When used, Code on Demand can enhance the flexibility and adaptability of the client-server communication, but it also requires careful consideration of security and compatibility issues.

Conclusion 

REST is a set of architectural principles and constraints that guide the design and implementation of web APIs. REST aims to provide a uniform and standardized way of interacting with resources on the server, using HTTP methods and URIs. REST also promotes the use of stateless, cacheable, layered, and code on demand (optional) components, to improve the performance, scalability, security, and flexibility of the client-server communication. REST is widely adopted and supported by many web frameworks and tools, and it has become the de facto standard for web APIs. REST is not just a style, it’s a philosophy. So, don’t be stressed, be RESTful!