As I've experienced one of the most commonly asked question for a software enigneer position is about HTTP methods, doesn't matter if you are applying for frontend or backend position, both sides should understand the differences and use these methods properly while either building or consuming an API.
So here are the five most commonly used HTTP methods and what you should know about them!
GET 🔎
GET
is used for retrieving multiple resources or retrieving a single resource.
Examples
List of resource
/api/user
Would return a list of user resource. Here in our context a resource is a single row in a database.
You can build pagination and simple search functionality with query strings:
/api/user?page=1&pageSize=5&hasProfilePicture=true
Single resource
/api/user/1337
Would return a single user resource which has an id of 1337
.
POST 📬
POST
is used for creating new resources. Each request shall create a new resource.
Example
For example to create a new user we could do:
/api/user
With the body of:
{
username: "great username",
password: "super-safe-password"
}
Of course in this case the password needs to be hashed.
PUT ♻️
PUT
is used for replace resource with the sent one. It can be also used to create new resource, but by RFC it should only replace resource and not create new one.
Example
/api/map/1337
With the body of:
{
lat: 42.42,
lng: 42.42
}
This would completely replace the resource with the id of 1337 with the new - sent - data.
PATCH 🩹
PATCH
is used for replace some part of the original resource. Should be used as partial updates.
Example
/api/map/1337
With the body of:
{
lat: 42.42
}
The difference between PUT
and PATCH
is that PUT
replaces the whole resource with the sent one while PATCH
only changes what is sent.
DELETE 🗑️
DELETE
is used for deleting a resource.
Example
DELETE /api/map/1337
Would delete map with the id of 1337
if exist.
Bonus question ➕
Which are idempotents and what is idempotent?
Idempotent means that multiple requests can be made with the server state unaffected. In other words idempotent requests should NOT have any side effect, it shouldn't change the server state.
In this sense only POST
is NOT idempotent, since POST
is creating new "database rows" on every request.
Closing thoughts
Thanks for reading. Please do keep in mind that technically there are no restrictions for creating these APIs so you can customize each and every behaviour.
Thank you for reading, and let's connect!
Thank you for reading my post! Feel free to subscribe to my email newsletter and connect on LinkedIn or Twitter 😊