Understanding REST APIs: Principles of Design and Implementation Part 01
Tags: webdev, restapi, api, serverless
Published: 2023-09-10 19:03:16

When you travel abroad and use a translation app, you simply speak into your phone, and like magic, the app translates your words into the local language, making communication with locals effortless.
Similarly, when you're hungry and open a food delivery app, you can peruse menus, select your favorite dishes, and place an order. The app works its magic by providing you with an estimated delivery time, and you can even track your food's journey from the restaurant to your doorstep in real-time.
Behind the scenes, there's a powerful server doing all the heavy lifting, but what connects you to this server is known as an API (Application Programming Interface). The history of APIs is rich, and over time, they have evolved into one of the most critical components for facilitating communication between your device, such as your phone, and a remote server located at a distant place.

![Client Server Communication](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eahu2t4mv8v7wjn5hycb.jpg)

APIs act as the intermediary between users and service providers, facilitating the exchange of services. They establish a contract where the service provider offers specific services that benefit the client. This interface enables users to access and utilize the services provided by the server. For example if users want to login, they have to give proper credentials, and after verification and validation from the server type user get to login into the system and get the services provided by the server.

In the ever-evolving world of APIs, we've seen a transition from traditional REST APIs to more flexible solutions like GraphQL. Once, REST APIs were the standard, offering predefined endpoints for specific data retrieval. However, as our needs grew more complex, GraphQL emerged as a game-changer. It allowed users to request precisely the data they needed, reducing over-fetching and under-fetching of information. This shift in API technology mirrors our desire for more tailored and efficient interactions with servers, enabling developers to craft even more magical experiences for users around the world.



![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oilr1c21mv32znmtvjg9.gif)








We will talk about GraphQL some other day, but let's take a dive into how Rest APIs came, how it became so popular among the developers and little bit of how it works. RESTful APIs gained popularity among developers due to its simplicity and scalability. It provides predefined endpoints for specific data retrieval, making it easier for developers to interact with servers. REST APIs work by sending HTTP requests to the server, which then responds with the requested data. This approach allows for efficient and standardized communication between clients and servers, enabling developers to build robust applications. REST APIs have played a crucial role in the evolution of the API landscape and continue to be widely used in various industries.


REST, short for Representational State Transfer, constitutes a set of architectural principles designed for creating user-friendly, scalable, and maintainable web services. These principles encompass:
🔸 **Uniform Interface:** The uniform interface principle stipulates that all resources should be accessible using consistent HTTP methods (GET, POST, PUT, DELETE). This standardization simplifies API usage. For instance, retrieving a list of users involves a GET request to the URL /users, creating a new user entails a POST request to /users, updating an existing user employs a PUT request to /users/123, and deleting an existing user utilizes a DELETE request to /users/12x.
Do you know that you can do all the functionality of GET, POST, PUT, DELETE by only using GET? Think a little bit how we can do that, we will talk about it in our next post.
🔸 **Client-Server:** According to the client-server principle, clients and servers should operate independently. Clients need not possess knowledge about the server's internal workings to use the API effectively. For instance, a client utilizing a RESTful API to retrieve a list of users only needs to know the resource's URL (e.g., /users).
🔸 **Stateless:** In the stateless approach, each client-to-server request must contain all required information for the server to comprehend and fulfil the request. The server refrains from retaining client state between requests. For instance, in an e-commerce API for shopping carts, every request to add or remove items includes vital information, such as product ID and quantity. The server does not store details about the client's cart between requests.
🔸 **Cacheability:** This principle highlights that resources can be cached by clients or intermediary systems. Caching enhances performance by diminishing the necessity for repeated server requests. For example, a client using a RESTful API to obtain a list of users can cache this list, reducing the need for frequent server requests.
🔸 **Layered System:** The layered system principle allows APIs to be structured as a series of independent layers. Each layer has a specific function and interfaces with the layers above and below it. For instance, in a social media application's RESTful API, one layer may manage authentication and authorization, another might oversee resource management, and a third could handle data access.
🔸 **Code on Demand (Optional):** This optional principal grant server the capability to send executable code to clients for specialized tasks, such as running client-side scripts or applets. However, this feature is seldom used in RESTful APIs and is considered non-essential.
These principles together form the foundation of RESTful APIs, providing a structured and effective approach to designing web services.

So yeah, that was all about today's blog, in our next blog we will talk a little bit more in depth about the http methods, step by step method on designing a RESTful API. Until then, happy coding. 🙌