A Deep Look into RESTful APIs

A Deep Look into RESTful APIs

You may have heard of REST APIs. But what exactly is REST? Or if you are a beginner, what is an API? In today's post, I shall explain the definitions of a RESTful API, how it works and why you as a developer should know how to build REST APIs.

What is an API?

An API (Application Program Interface) is a set of functions and procedures that enables different programs to communicate with one another and transmit data, allowing app integration and creation.

APIs simplify the process and design of app development. Well-known companies like Google, Apple, Amazon and Facebook all use APIs to deliver and design scalable apps efficiently. Some APIs integrated into apps around you are:

  • Weather apps

  • Apps with Authentication/Log-in

  • Travel/Booking apps

  • Twitter

Developers can use APIs to make HTTP requests such as GET, POST, PUT, PATCH and DELETE requests to send or retrieve information. Feel free to read my The Basics of HTTP Request Methods for more details on HTTP methods.

1.png

Source: codesmith.io/5638cae65696abd895ad98e5ec62db..

So what about REST APIs?

REST APIs are APIs with a defined set of rules that developers follow when creating this type of API. REST is short for Representational State Transfer and RESTful APIs follow these 6 guiding principles:

1. Client-Server Architecture

A principle that states that an API design should isolate client and server components. Any communication or requests must be handled by HTTP requests.

2. Stateless

All requests from the client must include all the data the server needs to complete the request. Each request are called independently.

3. Cacheable

A response data should be cacheable to recycle data for similar requests. This reduces client-server interactions, which improves performance and saves time.

4. Uniform Interface

A REST API must have a uniform interface which can simplify the system architecture and allow each part to evolve independently. The interface should include the 4 design facets:

  • Identification of resources (i.e. URIs like user/12345/ to identify user with ID 12345)

  • Management of resources through representations (i.e. XML or JSON)

  • Self-descriptive communications (i.e. GET, POST, PUT, PATCH and DELETE methods)

  • Hypermedia as the engine of application state (i.e. Hyperlinks allow user to progress through the app)

3.jpg

Source: pgaemers.files.wordpress.com/2016/03/hateoa..

5. Layered System

2.png

Source: ibm.com/developerworks/library/wa-aj-multit..

Having additional layers on the client-server system in which each layer is a component that cannot interact outside the subsequent layer. These layers can offer additional features like security, load balancing and scalability.

6. Code on Demand

Allow servers to deliver executable code to extend the functionality of the client in addition to returning static XML or JSON data.

Why REST APIs?

Though having to follow the above 6 guiding principles of a REST API seems complicated, REST APIs are becoming more prevalent due to their:

Scalability

Because client and servers are separated, it is easier to scale, streamline and manage servers across multiple platforms without concerning front-end interface.

Flexibility

REST APIs can easily allow users to communicate across different servers and supports multiple types of calls with different data return types.

Independent

Due to having data not being tied to one resource or method, REST APIs can automonously test different areas in multiple environments while in development

Conclusion

I hope this has been an insightful read to the REST architecture and RESTful APIs! It's pretty difficult to explain so much information in detail and I think the best way to understand something is by using it so i suggest trying to build some APIs on your own and applying the REST principles. Thanks for reading, cheers!

Cover image credit: seobility.net/en/wiki/REST_API

Did you find this article valuable?

Support Victoria Lo by becoming a sponsor. Any amount is appreciated!

ย