# # Working with APIs — A Beginner's Guide (using `requests`)


Jab maine pehli baar "API" word suna tha, mujhe laga ye kuch alien technology hai. Lekin actual mein, API utna hi simple concept hai jitna ek waiter ko order dena. Is blog mein main API ka pura flow — Request se lekar Response tak — beginner-friendly tareeke se samjhaunga.

## API Kya Hai?

**API (Application Programming Interface)** ek tarika hai jisse do software ek dusre se baat kar paate hain.

Socho tum ek restaurant mein ho. Tum (Client) waiter ko order dete ho. Waiter kitchen (Server) mein jaake order deta hai, khana ban'ne ke baad waapas tumhare table par le aata hai.

*   **Tum** = Dev/Client (jo request bhejta hai)
    
*   **Waiter** = API (jo request le jaata hai aur response wapas laata hai)
    
*   **Kitchen** = Server (jo actually data process karta hai)
    

Yehi pura flow hai jo har API call mein hota hai.

## The Flow: Client → Request → API → Server → Response

```plaintext
DEv (Client)
     |
     v
  Request
     |
     v
working with APIs
     |
     v
Server Processes
     |
     v
Response (status-code)
```

1.  **Client** kuch chahta hai — data fetch karna ho, ya naya data save karna ho.
    
2.  Wo ek **Request** banata hai aur API (URL) ko bhejta hai.
    
3.  **API** us request ko server tak le jaata hai.
    
4.  **Server** request ko process karta hai — database check karta hai, calculation karta hai, ya jo bhi zaroori ho.
    
5.  Server ek **Response** wapas bhejta hai, jisme data aur ek **status code** hota hai jo batata hai ki request successful thi ya nahi.
    

## Types of Requests (HTTP Methods)

Har request ka ek "type" hota hai, jo batata hai client kya karna chahta hai:

| Method | Kaam | Example |
| --- | --- | --- |
| **GET** | Data **lena** (read) | List of users dekhna |
| **POST** | Naya data **bhejna/create** karna | Naya user banana |
| **PUT/PATCH** | Existing data **update** karna | User ka naam change karna |
| **DELETE** | Data **delete** karna | User account delete karna |

Simple yaad rakhne ka tarika — ye CRUD operations (Create, Read, Update, Delete) ka API version hai.

## Status Codes — Response ka Result

Jab server response bhejta hai, uske saath ek **status code** aata hai jo batata hai kya hua:

*   **200** → OK, sab kuch sahi gaya ✅
    
*   **201** → Created, naya data successfully ban gaya
    
*   **400** → Bad Request, tumne galat data bheja
    
*   **401** → Unauthorized, login/token chahiye
    
*   **403** → Forbidden, permission nahi hai
    
*   **404** → Not Found, jo URL maanga wo exist nahi karta
    
*   **500** → Internal Server Error, server side mein kuch galat hua
    

Yaad rakhne ki trick:

*   **2xx** = sab theek
    
*   **4xx** = client ne galti ki
    
*   **5xx** = server ne galti ki
    

## Python mein APIs ke saath kaam karna (`requests` library)

Ab thoda code dekhte hain. Python mein `requests` library APIs ke saath kaam karna bohot easy bana deti hai.

```python
import requests

# GET request - data fetch karna
response = requests.get("https://api.example.com/users")
print(response.status_code)   # e.g. 200
print(response.json())        # response body as Python dict/list
```

```python
# POST request - naya data bhejna
data = {"name": "Himanshu", "age": 19}
response = requests.post("https://api.example.com/users", json=data)
print(response.status_code)   # e.g. 201 (Created)
```

### Headers — extra info bhejna

Kabhi kabhi request ke saath authentication ya extra metadata bhejna padta hai:

```python
headers = {"Authorization": "Bearer <token>"}
requests.get(url, headers=headers)
```

### Query Parameters — filter/search bhejna

```python
params = {"search": "python"}
requests.get(url, params=params)
# Final URL: https://api.example.com/users?search=python
```

### JSON — APIs ki common language

Most APIs data ko **JSON format** mein bhejte/lete hain — jo basically Python ke dictionary jaisa hi structure hai (key-value pairs). Isi liye `requests` library mein `.json()` method itna handy hai.

## Quick Recap

*   API = do software ke beech baat-cheet karne ka tarika
    
*   Client request bhejta hai → API server tak le jaata hai → Server process karta hai → Response wapas aata hai
    
*   GET, POST, PUT/PATCH, DELETE — yehi 4 main request types hain
    
*   Status code batata hai request successful thi ya nahi (2xx success, 4xx client error, 5xx server error)
    
*   Python mein `requests` library se APIs use karna kaafi straightforward hai
    

Agli baar jab koi app data fetch karte dekho — chahe wo weather app ho ya social media feed — ab tumhe pata hai background mein exactly kya ho raha hai!

* * *

*Agar ye post helpful laga, toh share karna mat bhoolna. Next post mein hum ek real API use karke ek mini-project banayenge.*
