Coding 101

What is an API? A Plain English Guide for Software Engineers

DD
Ankur Ishwar
8 min read Updated Sep 7, 2026
What is an API guide for developers

The College Professor Definition vs Production Reality

During my second year of engineering, our teacher wrote this definition on the blackboard: 'An Application Programming Interface is a computing interface that defines interactions between multiple software intermediaries.'

I memorized it for the semester exam, scored eight marks, and still had zero clue what an API actually was. When I tried to build my first web application on my old 8GB RAM laptop, I was completely lost. How does a user clicking a button in React save data into a Postgres database running on an AWS EC2 instance? How does Swiggy show your delivery driver moving on Google Maps?

An API is simply an agreed contract between two programs over a network. It is a URL endpoint that listens for incoming messages, runs business logic, and sends back formatted data (usually JSON). Nothing more, nothing less.

The Restaurant Metaphor and Why It Fails Engineers

Every non-technical blog explains APIs using a restaurant analogy: you are the customer, the kitchen is the backend system, and the waiter is the API bringing your soup. It is a cute mental picture, but it stops being useful the moment you write real software.

In the real world, an API is an HTTP specification. As a software developer, you do not deal with imaginary waiters. You deal with TCP sockets, HTTP headers, request payloads, authentication tokens, rate limits, and status codes.

When your mobile app opens, it makes an HTTP GET request to https://api.myapp.com/v1/feed. The server parses that incoming request, queries the database, serializes the rows into JSON text, and returns a 200 OK response with that text. That communication loop is the API in action.

Anatomy of an API Request: The Four Essential Parts

Every REST API call you make or handle consists of four core elements:

  1. Endpoint (URL): The network address of the server resource, such as https://api.dropoutdeveloper.in/users/profile.
  2. HTTP Method (Verb): The specific action the client wants to execute (GET, POST, PUT, DELETE).
  3. Headers: Metadata about the request, like Content-Type: application/json and Authorization: Bearer <token>.
  4. Body (Payload): The data you send with POST or PUT requests, structured as JSON strings.

HTTP Verbs: What They Actually Do

Standard REST architecture maps HTTP verbs to database CRUD operations:

HTTP Method Database Operation Idempotent? Common Use Case
GET Read (SELECT) Yes Fetch a user profile or fetch a product list.
POST Create (INSERT) No Register a new user or submit an order.
PUT Replace (UPDATE) Yes Replace an entire user record with new fields.
PATCH Partial Update No Update only one field, like changing an email address.
DELETE Delete (DELETE) Yes Remove an item from a shopping cart.

An operation is idempotent if sending the exact same request five times in a row leaves the server in the exact same state as sending it once. Running DELETE /cart/item/42 ten times leaves item 42 deleted. But running POST /orders ten times might charge your customer's credit card ten times.

HTTP Status Codes You Must Know by Heart

When an API responds, the status code tells the client what happened without reading the body:

  • 200 OK: Request succeeded, data returned in response body.
  • 201 Created: New resource successfully created in database (used on POST).
  • 400 Bad Request: The client sent invalid data (e.g., missing required fields).
  • 401 Unauthorized: Missing or expired authentication token.
  • 403 Forbidden: Authenticated, but your role lacks permission to touch this resource.
  • 404 Not Found: The requested endpoint or record does not exist.
  • 429 Too Many Requests: Rate limit exceeded; the client is spamming calls.
  • 500 Internal Server Error: The backend code threw an unhandled exception.

Building Your First Real REST API in Node.js

Here is a complete, runnable REST API using Node.js and Express that demonstrates input validation, status codes, and JSON responses:

// server.js - Run with: node server.js
import express from 'express';

const app = express();
app.use(express.json());

// In-memory mock database
let developers = [
  { id: 1, name: 'Ankur Ishwar', role: 'Full Stack Engineer', location: 'Pune' },
  { id: 2, name: 'Rahul Sharma', role: 'Backend Developer', location: 'Bangalore' }
];

// 1. GET /api/developers - List all records
app.get('/api/developers', (req, res) => {
  return res.status(200).json({
    success: true,
    count: developers.length,
    data: developers
  });
});

// 2. GET /api/developers/:id - Fetch single record
app.get('/api/developers/:id', (req, res) => {
  const id = parseInt(req.params.id, 10);
  const dev = developers.find(d => d.id === id);

  if (!dev) {
    return res.status(404).json({
      success: false,
      error: `Developer with ID ${id} was not found.`
    });
  }

  return res.status(200).json({ success: true, data: dev });
});

// 3. POST /api/developers - Create new record with validation
app.post('/api/developers', (req, res) => {
  const { name, role, location } = req.body;

  if (!name || !role) {
    return res.status(400).json({
      success: false,
      error: 'Please provide both name and role.'
    });
  }

  const newDeveloper = {
    id: developers.length + 1,
    name: name.trim(),
    role: role.trim(),
    location: location ? location.trim() : 'Remote'
  };

  developers.push(newDeveloper);
  return res.status(201).json({ success: true, data: newDeveloper });
});

const PORT = 3000;
app.listen(PORT, () => {
  console.log(`API server running on http://localhost:${PORT}`);
});

How the Frontend Consumes This Endpoint

On the browser side, whether you write Angular, React, or plain JavaScript, consuming this API is straightforward with the native fetch API:

// client.js - Fetching the API from browser or node script
async function createDeveloper() {
  try {
    const response = await fetch('http://localhost:3000/api/developers', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        name: 'Pooja Verma',
        role: 'Frontend Engineer',
        location: 'Hyderabad'
      })
    });

    if (!response.ok) {
      const errData = await response.json();
      throw new Error(errData.error || 'Server error occurred');
    }

    const result = await response.json();
    console.log('Created developer:', result.data);
  } catch (err) {
    console.error('API call failed:', err.message);
  }
}

createDeveloper();

Tools You Need to Debug APIs Every Day

Working with APIs requires the right debugging workflow:

  • Postman / Bruno: Test your endpoints locally before connecting any frontend UI. Inspect headers, payload responses, and latency.
  • Chrome DevTools (Network Tab): Filter by 'Fetch/XHR' to inspect requests your browser makes, their payload bodies, and error response texts.
  • cURL: Test APIs directly inside your terminal with a quick command like curl -X GET http://localhost:3000/api/developers.

Format and validate raw API response payloads easily with our free JSON Formatter. If your API handles binary tokens or basic auth headers, use our Base64 Encoder / Decoder. When you are ready to build full applications, read our complete guide on Backend Development for Beginners and explore our Free Developer Tools.

Once you understand that an API is simply structured text traveling over HTTP, all the fear disappears. Open your code editor, spin up the Express server code above, and make your first POST request tonight.

Found this useful?
View all articles
Free Technical Interview Prep

Practicing for Engineering Interviews?

Skip the expensive coaching bootcamps and dry LeetCode memorization. Practice real production scenarios with instant turn-by-turn AI feedback on Frontend, Backend, System Design, and DSA.

Free Utilities

Recommended Developer Tools for this Topic

Explore all 25+ tools

Keep Reading

Related Articles

Learn with Dropout Developer

Build real software with AI

Step-by-step learning paths, vibe coding tutorials, and certified developer programs designed for the modern engineer.