What is API....
Tags: beginners, javascript, codenewbie, webdev
Published: 2020-12-04 16:43:49

Ever wondered how travel booking sites are able to list thousands of flights and hotels for a destination and showcase the cheapest option...
The answer is **API**.

In technical terms, **API** is **Application Programming Interface.** The name itself says it's an interface between two programs.
APIs let your application communicate with other applications without having to know how they’re implemented.

###Why API?

Consider you are developing translation app which takes user input in English and shows translated text in Korean language. Now to implement this if you go on developing the whole program which will translate user words in Korean, you will end up making your code more complex and will spend a lot of time.
Instead, if you use API for translation, you just need to program to take user input and display translated output. You don't need to know how the translation is taking place. Another application will have program to translate it and API will get that translated text for you. 
This can simplify app development, saving time and money. Let's see how API works.

###How does API work?

Consider you are at a restaurant and you requested Noodles to waiter. Waiter will go to the kitchen(where your Noodles are being prepared) and get your order from kitchen back to you. You may not even know how to prepare the noodles.

In this above example, **waiter** is **API**. **You** are your **translation app**. **Noodles** are **translated text** for user's English input. **Kitchen** is **another application**(which have program to translate to Korean language).

API allows software applications to talk to each other. but how do API transfer information then?
There are four types of actions an API can take:

**1. GET: Requests data from server**

`GET` requests are the most common and widely used methods in APIs and websites. The `GET` method is used to retrieve data from a resource. Like in translation app, translation app requests for translated text for user input text. `GET` method of API brings response from server of that actual translating app. This response content is transmitted in the XML/JSON files. 
See below screenshot, if `GET` method successfully brings response(translated text), it gives success code 200. If server is down or server is not found, it gives error code 400 in response. 
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/qocqjgg8w6grf31sqr4i.png)



Since a `GET` request is only requesting data and not modifying any resource, it's considered a safe and idempotent method.
Idempotent means making multiple identical requests must produce the same result every time until server content is not changed.

**2. POST: Sends new information to a server**

In web services, `POST` requests are used to send data to the API server to create new data in resource. 
Consider you are filling a sign up form, when you enter your personal information and click on sign up, it takes entered data in format of XML/JSON/query parameters as `POST` request to the server where all the signed up users data gets stored.
If personal information is successfully stored in server, then we get 200 status code for `POST` request in response.
`POST` request is not idempotent. Every time we send data to store using `POST` request, it creates new data in resource.

**3. PUT: Makes changes to existing data on server**

`PUT` request is same as `POST` request. Difference is `PUT` request is idempotent. Every time we send data using `PUT` request to the API server to create data in resource, it checks if the data in resource is already present, if present then it updates the existing data in resource. If not present, it creates data in resource.

**4. DELETE: Removes existing info from server**

`DELETE` operations are idempotent. If you `DELETE` data, it’s removed from the resource. Requesting `DELETE` data second time will return a 404 error code in response.

--------------------------------------------------

It is important that we know what basically happens when we include anything new in our programs. I hope beginners will find this article helpful when working with APIs.