Skip to main content

What is an API? REST Architecture Explained

Whenever you check live cricket scores, query weather forecasts, or ask ChatGPT a question in your Python app, you are talking to an API (Application Programming Interface).

An API is a messenger that allows two independent software programs to talk to each other over the internet.


1. The Real-World Metaphor: The Restaurant Waiter

Think of a restaurant:

  • You (The Client / Python App): You sit at the table with the menu.
  • The Kitchen (The Server / Database): Where the food is prepared and stored.
  • The Waiter (The API): You give your food order (HTTP Request) to the waiter. The waiter walks to the kitchen, brings your food back, and delivers it to your table (HTTP Response).
+------------------+ HTTP Request (GET /weather) +------------------+
| Python Program | ──────────────────────────────────────────> | Cloud Server |
| (The Client) | <────────────────────────────────────────── | (Weather DB) |
+------------------+ HTTP Response (JSON: 28°C) +------------------+

2. Anatomy of an HTTP Request

When your Python code talks to an API server, it sends four pieces of information:

  1. Endpoint (URL): Where the resource lives (e.g. https://api.github.com/users/octocat).
  2. HTTP Method (Action verb): What action you want the server to perform.
  3. Headers: Metadata (e.g. Content-Type: application/json or authentication tokens).
  4. Body (Payload): Data sent along with POST/PUT requests (e.g. login credentials).

3. The Core HTTP Action Verbs

MethodWhat It DoesReal-World CRUD Equivalent
GETFetch data from the server (Read only)Read
POSTCreate a brand new resource on the serverCreate
PUT / PATCHUpdate or modify existing recordsUpdate
DELETERemove a record from the databaseDelete

4. Understanding HTTP Status Codes

When an API answers back, it includes a 3-digit numerical status code indicating whether the request succeeded:

2xx: Success

200 OK: Request succeeded.
201 Created: New record saved.

3xx: Redirection

301 Moved Permanently: Resource has a new URL.

4xx: Client Mistakes

400 Bad Request: Invalid JSON syntax.
401 Unauthorized: Missing or invalid API key.
404 Not Found: Endpoint URL does not exist.

5xx: Server Crashes

500 Internal Server Error: Bug inside cloud server code.
503 Service Unavailable: Server overloaded.


Quick Summary

  • REST API: Client-server communication protocol enabling programs to exchange JSON over HTTP/HTTPS.
  • HTTP Methods: GET (fetch data), POST (create new resource), PUT / PATCH (update), DELETE (remove).
  • Status Code Families: 2xx (Success), 3xx (Redirection), 4xx (Client Errors like 401 Unauthorized / 404 Not Found), 5xx (Server Errors).

What's Next?

Let's learn how to make live HTTP GET requests, query parameters, and parse JSON using Python's requests library in Fetching Data with GET Requests!