This blog will covers the basic principles of designing of restful APIs and I will use ASP.NET Web API as example to elaborate the designing principles with proper practical example.
In a day to day life, most of software developer creates Web API project and publish Web API as internal service for internal application or publish as external service to external clients.
If developer follows these principles while designing the APIs it avoids common mistakes and helps to build the consistence, reliable and robust APIs.
· Use NOUNS and NOT the verbs
· Use the HTTP Verbs
· Use the Plurals
· Use Query Parameters
· Use the Proper HTTP Code
· Versioning
· Use Pagination Concept for Huge Data
Use NOUNS and NOT the verbs:
It’s a very common mistake what develop make, they starts using verb in API URL and trying to explain the APIs functionalities by using the method name like GetAllProjects or CreateProject b but in Rest API, the HTTP Verbs can better describes the API instead of using method name in URI
Eg.
GET all Projects:
API/GetAllProjects
Or
Create Project:
API/CreateProject
To avoid above common mistake, we need to use NOUNS instead of Verbs
Eg.
GET all Projects:
HTTP GET API/Projects
Create Project:
HTTP POST API/Projects
Use the HTTP Verbs
HTTP verbs are known as method just like resource are nouns and HTTP verbs defined the type of operation of REST API
HTTP Verb
|
Semantic
|
GET
|
Retrieve a single resource or collection of resource
|
POST
|
Create a new resource
|
PUT
|
Completely replace a resource
|
PATCH
|
Partially update a resource
|
HEAD
|
Retrieve only header information of response
|
DELETE
|
Delete the existing resource
|
Use the Plurals
Keep the resource URL name the plurals instead of singulars and if you are using singulars or plurals name convention, make consistence.
API/Projects --------- plurals
API/Project ---------- singulars, in case of get ALL project resources, it will be confusing
Use Query Parameters
Most of time, we need to filter the resource by passing ID or Code.
Get Project Resource by Project ID
HTTP GET API/Projects/1000
Get Project Resource by Project Code
HTTP GET API/Projects/Code/PJ1212
In some scenario, we need to pass more than one filters so the query parameter should be used for Restful API designing.
HTTP GET API/Projects?City=Houston&Type=IT
Use the Proper HTTP Code
While designing the restful API, we need to make sure that API should always return the right and consistence HTTP status Code and without consistent HTTP status codes, customers will not know the difference between success or failure without parsing the response body
HTTP standard provides almost 70 HTTP status codes to describe the HTTP Response status and you can use below HTTP status code for restful API.
200 – OK
204 – OK – No Content
400 – Bad Request
401 – Unauthorized
500 – Internal Server Error
503 – Service is not available
Versioning
Versioning is very important feature of API and it is always advisable that publish API with version code so you can easily distinct between current version and previous version of API and it helps us to support backward compatibility and customer get time to transition from current version to next version.
There are many ways to maintain the versioning of API by using API URI, Header or query parameters.
HTTP GET: API/v1/Projects
HTTP GET: API/v2/Projects
Use Pagination Concept for Huge Data
In case of API returns huge data, it is advisable to use pagination concept and display only allowable size of data.
You can use PageSize and CurrentPage logic to implement pagination or limit & offset logic
HTTP GET: API/v1/Projects?PageSize=25&CurrentPage=2
OR
HTTP GET: API/v1/Projects?limit=25&offset =25
No comments:
Post a Comment