Discover this podcast and so much more

Podcasts are free to enjoy without a subscription. We also offer ebooks, audiobooks, and so much more for just $11.99/month.

Episode 104 - REST API - The Good, the Bad and the Ugly

Episode 104 - REST API - The Good, the Bad and the Ugly

FromThe Backend Engineering Show with Hussein Nasser


Episode 104 - REST API - The Good, the Bad and the Ugly

FromThe Backend Engineering Show with Hussein Nasser

ratings:
Length:
26 minutes
Released:
Aug 7, 2019
Format:
Podcast episode

Description

 
REST stands for Representational state transfer its is an architecture that became very popular in build web APIs. It was the dissertation of Roy Fielding. In this video we discuss what makes an API RESTFUL, the REST APIs constrains, ill the show you an example of a RESTFUL api in github. 
Representation and State transfer 
Representational 
The resource is a representation or meta data, but the actual backend could be something else and stored differently. An 
Example, could be a user resource could be represented as a JSON object but it is stored on the backend as relation DBMS tables such as postgres. 
State transfer
The application server is stateless, and when we want communicate we transfer the current state of with each request. Thus the state transfer.  
Example, lets say you are uploading a 5MB file in 5 chunks each is 1 MB in size and assemble it on the backend. The REST api end point takes the content along with a upload sequence, then persist it on a storage backend such as S3. Each chunk request could hit a completely different stateless server and the transfer will work fine since we are transferring the state (upload sequence) with every request. The client maintains the state in this case. 
Rest constraints
Client/server architecture
Is there separation of concern? Can you upgrade your server without upgrading client? Can you upgrade the server without upgrading the client? 
Statelessness
Is your api stateless? Can you restart your backend server and clients of your api resume working normally without failing? Can you add a non sticky load balancer and transfer the load between the servers without the client breaking?
Cachablity 
Can resources that can be cached be cached with your api? And is there a way to identify stale resources? 
Layered systems
Can I insert gateways and proxies and firewalls silently without this architecture breaking? Load balancers 
Uniform interface
Resource identification (uri) 
Resource Representation (json) 
HATEOAS
Hypermedia as an engine to application state
Initial link can link to the rest ( github) 
Github 
Emojis 
Released:
Aug 7, 2019
Format:
Podcast episode

Titles in the series (100)

Welcome to the Backend Engineering Show podcast with your host Hussein Nasser. If you like software engineering you’ve come to the right place. I discuss all sorts of software engineering technologies and news with specific focus on the backend. All opinions are my own. Most of my content in the podcast is an audio version of videos I post on my youtube channel here http://www.youtube.com/c/HusseinNasser-software-engineering Buy me a coffee https://www.buymeacoffee.com/hnasr ?‍? Courses I Teach https://husseinnasser.com/courses