Getting Started with cURL
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