- What is an API ?
- What is the use of an API ?
- What are the different types of API ?
- What is a Restful API ?
- What are the HTTP verbs related to an API ?
- What are the HTTP status code related to an API ?
API is more like an agreement or a contract of services between any application with distinct functions. Here, the contract of service referred as an application INTERFACE and application with distinct functions referred as an application PROGRAMS, and that’s how API stands for APPLICATION PROGRAMMING INTERFACE.
API is mostly used for interaction( by transferring data ) between more than two applications followed by a request-response behavior.
There are two ways you can categorized an API.
1.Based on architecture, for example
RPC ( Remote Procedure Call ), there are two variation XML-RPC, JSON-RPC
SOAP ( Simple Object Access Protocol )
REST ( Representational State Transfer )
2.Based on availability, for example
Open API / Public API
Internal API / Private API
In today’s world most of the APIs are REST Driven or RESTful ( based on REST architecture ).
There are six constraints in a REST API or a RESTful API. Any API can be a RESTful API if it follows those six constrains.
Uniform Interface - An agreement that separates clients from the server. A resource( information that returned by an API ) in the system should have only one logical URI but it should contain links (known as HATEOAS) pointing to relative URIs to fetch related information.
Client-Server - Client and the Server must be able to evolve separately without depending upon each other.
Stateless- The server will not store anything about the latest request that the client made. It will treat every request as a new one. Here the client is responsible for managing the state of the application.
Layered System - A application architecture should be distributed in multiple layers but each layer doesn't need to know anything about any other layer other than the intermediate one.
Cacheable - The main function of that constraint is to increase the performance of the application by storing frequently used data either in the client-side or the server side.
Code on demand(optional) - Most of the cases its optional. But it works by returning a executable code to support a part of your application.
HTTP verbs mainly use to tell the server what to do with the data identified by the url. There are 5 most common HTTP verbs and there uses as follows.
- POST - Create new resource ( C )
- GET - Read resources ( R )
- PUT - Update/Replace existing resource ( E )
- PATCH - Update/Modify existing resource
- DELETE - Delete resources ( D )
It almost similar to the CRUD functionality with different verbs.
HTTP status code divided into 4 segment and each segment has their own functionality.
2xx series related to Successful Request.
200 - Successful
201 - Resource Created
204 - Resource Updated
3xx series related to Redirection
301 - Permanent redirection ( possible to change HTTP verb )
307 - Temporary redirection ( can’t change HTTP verb )
308 - Permanent redirection ( can’t change HTTP verb )
4xx series related to Client Error
400 - Bad request
401 - Wrong credentials ( unauthorized )
403 - Lack of authorization ( forbidden )
404 - Resource not exist
405 - HTTP verb mismatch
422 - Send data in valid
5xx series related to Server Error
500 - Internal Server error
501 - If server don’t know how to handle the request
502 - Bad Gateway
503 - Service is down for maintenance
504 - Gateway timeout