Table of contents
To understand Rest APIs we first need to know what an API is.
An API is short for application programming interface and it is a set of rules and protocols for interacting with application software running on different machines. APIs are used by developers so that other applications can communicate with their applications programmatically.
What is REST?
Representational State Transfer (REST) is a software architectural style that imposes conditions or guides the development of the architecture for the World Wide Web. It was used to manage communication on a complex network such as the Internet.
A REST API is simply an API that conforms to the design principles of REST architectural style. Restful web services are such web services that implement the REST architecture. REST API is not tied to any specific language, which makes it a solid choice for building APIs for web interactions.
The below figure gives an architectural view of a REST API call from a REST client to a REST server using HTTP:
link: REST API figure
I posted the link cause I don't yet know how to upload custom images to this site yet. I will update once a solution will be found.
A REST API relies on HTTP requests and uses its native methods namely; GET, PUT, POST and DELETE to perform CRUD (Create, Read, Update, Delete) operations on resources. The use of these methods simplifies the implementation of client-side and server-side software from an API design perspective.
What are the principles of REST architectural style?
Some of the key principles of REST architecture are:
Statelessness – The server should not store any client state. Each request to the server must contain all the information needed to understand and process the request.
Uniform interface – There should be a consistent and uniform set of interactions between clients and servers. This simplifies client and server implementations and allows for a more scalable system.
Resource-based – REST APIs are designed around resources, which are objects or entities in the application. Each resource is identified by a unique URL. The URL specifies to the server what the client requires.
Cacheability – The caching mechanism is supported by RESTful web services to improve server response time. A cache is a reserved memory location that stores client information for efficient access on further requests.
Client-server – The architecture is divided into a client (user interface) and a server (application logic and data storage). This allows for scalability as well as independent development of clients and servers.
Layered system – REST architecture can be composed of multiple layers such as business logic, security, caches, proxies and gateways. Each layer is responsible for a specific function and the client may not be aware of the system’s complexity.
Code on Demand – The architecture may be able to extend client functionality by allowing the client to run executable code, which can be executed within the client’s runtime.
Hypermedia as the Engine of Application State (HATEOAS) – emphasizes the use of hyperlinks to navigate an application’s state. These hyperlinks allow a client to discover and access available, related resources, without needing to know the exact URLs or API endpoints in advance. If you have ever browsed a movie from Google or another browser, you may have come across the feature that recommends similar movies for you to check out or you might see links to the profiles of the cast members. This feature uses hyperlinks to guide your navigation and actions, enabling an intuitive experience when navigating the web.
How RESTful APIs work
The client contacts the server by using the API when it requires a resource. The API developers indicate how the client should use the REST API in the server application API documentation. Here is an example of a REST API interaction:
· Client sends a GET request to ‘https://api.example.com/users’ to retrieve a list of users.
· The server processes the request and returns a JSON response with user data.
· The client can then send a POST request to ‘https://api.example.com/users’ to create a new user.
· The server processes the request, creates the user, and responds with a success status code and the newly created user’s information.
REST APIs provide a standardized and scalable way for different software systems to communicate and exchange data over the web.
Benefits of RESTful APIs
Scalability – REST APIs are stateless. There is less server load since the server does not have to retain past client request information. The server can also distribute the load among multiple server instances because they do not maintain the client state.
Platform independence – REST APIs can be accessed from any platform or device that can make HTTP requests making them platform-independent. You can change the underlying technology on either side without affecting the communication between both sides in the architecture.
Flexibility – Clients can request various data formats such as JSON, and XML depending on their needs. This promotes compatibility with different clients and technologies. The separation of concerns between the client and server allows for each part to evolve independently. Technology changes at the server application do not affect the client application.
Security – REST APIs can leverage HTTPS’s security mechanisms such as HTTPS for secure connection. In addition, token-based authentication and authorization mechanisms can be easily integrated.
Discoverability – the HATEOAS principle allows clients to discover and navigate the API dynamically by following hyperlinks provided in API responses. This reduces the need for prior knowledge about the API structure.
Separation of concerns – REST separates the client and server components, allowing them to evolve independently. This separation enhances modularity and maintainability.
In Summary
REST APIs, built on the principles of Representational State Transfer, play a pivotal role in modern web development. They provide a simple, scalable and flexible means of communication between clients and servers. The importance of REST APIs lies in their ability to foster interoperability, separation of concerns, and statelessness, resulting in a streamlined development process and robust, scalable web services. Their benefits, including flexibility, discoverability and support for multiple devices, make REST APIs a popular choice in the evolving landscape of digital applications. REST remains to date a foundational architectural style that empowers developers to create efficient and accessible web services that serve the needs of diverse clients and platforms.