Skip to main content

Command Palette

Search for a command to run...

Getting Started with cURL

Published
•5 min read•View as Markdown

cURL Explained for Beginners

If you’ve ever wondered how your browser talks to a server — or how backend developers test APIs without a browser — cURL is one of the first tools you should understand.

This article explains cURL from zero, assuming no prior backend knowledge.


1️⃣ What Is a Server (and Why Do We Talk to It?)

A server is just a computer on the internet that:

  • waits for requests

  • processes them

  • sends back responses

Examples:

  • A website server sends you HTML pages

  • An API server sends JSON data

  • An auth server verifies usernames and passwords

Whenever you:

  • open a website

  • submit a form

  • fetch data from an app

👉 you’re talking to a server


2️⃣ What Is cURL (In Very Simple Terms)?

cURL is a tool that lets you talk to a server from the terminal.

Instead of clicking buttons in a browser, you:

  • type a command

  • send a request

  • see the raw response

Think of it as:

“A command-line way to send messages to servers”


3️⃣ Why Programmers Need cURL

Browsers are great for users.
cURL is great for developers.

Programmers use cURL to:

  • test APIs

  • check server responses

  • debug backend issues

  • automate requests in scripts

  • verify authentication

No UI. No clicks. Just request → response.


4️⃣ cURL → Server → Response (Big Picture)

+--------+        HTTP Request        +-----------+
|  cURL  | ------------------------> |  Server   |
| Client |                           | (API/Web) |
+--------+                           +-----------+
     ^                                     |
     |            HTTP Response            |
     +-------------------------------------+

cURL sends a request
Server processes it
Server sends a response
cURL prints it in the terminal


5️⃣ Your First cURL Request (Simplest Possible)

Let’s fetch a webpage.

curl https://example.com

That’s it.
No flags. No options.

What just happened?

  • cURL sent a GET request

  • Server returned the page content

  • cURL printed the response


6️⃣ Understanding Request vs Response

📤 Request (What You Send)

GET / HTTP/1.1
Host: example.com

You are asking:

“Give me the homepage”


📥 Response (What You Get Back)

HTTP/1.1 200 OK
Content-Type: text/html

<html>
  <body>Hello World</body>
</html>

This tells you:

  • 200 OK → request succeeded

  • Content-Type → what kind of data

  • Body → actual content


7️⃣ Browser Request vs cURL Request

Browser Flow

User
  ↓
Browser (UI, JS, cookies, cache)
  ↓
HTTP Request
  ↓
Server
  ↓
HTML + CSS + JS
  ↓
Rendered Website

cURL Flow

Developer
  ↓
cURL (Terminal)
  ↓
HTTP Request
  ↓
Server
  ↓
Raw Response (Text / JSON)

Key difference

  • Browser renders

  • cURL shows raw truth


8️⃣ GET and POST (Only What You Need)

GET → Fetch data

curl https://api.example.com/users

Used for:

  • reading data

  • fetching pages

  • retrieving lists


POST → Send data

curl -X POST https://api.example.com/login

Used for:

  • submitting forms

  • logging in

  • creating resources

⚠️ No advanced flags yet — just the idea.


9️⃣ Using cURL to Talk to APIs

APIs don’t return web pages.
They return data.

Example response:

{
  "id": 1,
  "name": "Alice"
}

cURL is perfect because:

  • APIs expect raw HTTP

  • cURL speaks raw HTTP

  • No browser noise


🔟 Where cURL Fits in Backend Development

Frontend App (Browser / Mobile)
            |
            v
        Backend API
            ^
            |
        cURL (Testing & Debugging)

Or during development:

Developer
   |
   v
cURL / Postman
   |
   v
Backend Service
   |
   v
Database

Backend engineers often test APIs before any frontend exists — using cURL.


1️⃣1️⃣ Common Mistakes Beginners Make

❌ Thinking cURL is only for downloading files
❌ Getting scared by too many flags
❌ Expecting pretty output like a browser
❌ Mixing GET and POST concepts
❌ Ignoring HTTP status codes

✅ Focus on:

  • request

  • response

  • status

  • data


1️⃣2️⃣ Mental Model to Remember

cURL is just a messenger.
You send a message → server replies → cURL shows it.

Once this clicks, everything else becomes easier.

Diagrams

1️⃣ cURL → Server → Response Flow

+--------+        HTTP Request        +-----------+
|  cURL  | ------------------------> |  Server   |
| Client |                           | (API/Web) |
+--------+                           +-----------+
     ^                                     |
     |            HTTP Response            |
     +-------------------------------------+

Flow

cURL → DNS Lookup → TCP Connection → HTTP Request
Server → Process Request → HTTP Response → cURL Output

2️⃣ Browser Request vs cURL Request (Conceptual)

Browser Request Flow
--------------------
User
  ↓
Browser (UI + JS + Cookies + Cache)
  ↓
HTTP Request
  ↓
Server
  ↓
HTML / CSS / JS / Images
  ↓
Browser renders UI


cURL Request Flow
-----------------
Developer
  ↓
cURL (CLI Tool)
  ↓
HTTP Request
  ↓
Server
  ↓
Raw HTTP Response (JSON / HTML / Status Code)

3️⃣ Basic HTTP Request Structure

GET /api/users HTTP/1.1
Host: example.com
User-Agent: curl/8.0.0
Accept: application/json
Authorization: Bearer <token>

(Request Body - optional)

4️⃣ Basic HTTP Response Structure

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 120

{
  "id": 1,
  "name": "Alice",
  "role": "Admin"
}

5️⃣ Where cURL Fits in Backend Development

Frontend (Browser / Mobile App)
            |
            v
        Backend API
            ^
            |
        cURL (Testing / Debugging)

Or a more complete dev workflow:

Developer
   |
   v
cURL / Postman
   |
   v
Load Balancer
   |
   v
Backend Service
   |
   v
Database

cURL in Real-World Backend Tasks

✔ Test REST APIs
✔ Debug request headers
✔ Check auth tokens
✔ Verify response status codes
✔ Automate API checks in scripts