URL Parameters vs Query Strings in Express.js
What URL Parameters Are
Whenever websites or APIs need dynamic values inside URLs, they often use:
URL Parameters
URL parameters are values placed directly inside the route path.
Example:
/users/10
Here:
10is dynamic value
Usually it represents:
user ID
product ID
post ID
resource identifier
Understanding URL Parameters Simply
Think of URL parameters like:
placeholders inside URL paths.
Example route:
/users/:id
Here:
:idis parameter placeholder
If user visits:
/users/25
then:
id = 25
Why URL Parameters Exist
Applications constantly need dynamic routes.
Examples:
specific user profile
single blog post
single product page
specific order details
Instead of creating separate routes manually:
/user1
/user2
/user3
developers use dynamic parameters.
Real Example
Example route:
/products/:productId
Possible URLs:
/products/101
/products/205
/products/999
Same route handles everything dynamically.
What Query Parameters Are
Query parameters are values added after:
?
inside URL.
Example:
/products?category=mobile
Here:
category=mobileis query parameter
Structure of Query Parameters
Basic structure:
?key=value
Multiple query parameters:
/products?category=mobile&price=1000
Understanding Query Parameters Simply
Query parameters are mainly used for:
filtering
searching
sorting
pagination
They provide extra optional information.
Real Example
Example:
/products?page=2
This may mean:
fetch second page of products.
Differences Between URL Params and Query Params
This is one of the most important beginner concepts.
URL Parameters
Usually identify:
specific resource.
Example:
/users/10
Meaning:
user with ID 10.
Query Parameters
Usually modify:
how data should be returned.
Example:
/users?sort=asc
Meaning:
return users sorted ascending.
Simple Thinking Difference
Params
Identify WHAT.
Query
Modify HOW.
URL Structure Comparison
Params Example
/products/25
Specific product.
Query Example
/products?category=electronics
Filter products.
Accessing Params in Express
:contentReference[oaicite:0]{index=0} provides access to URL parameters using:
req.params
Basic Example
Example:
app.get("/users/:id", (req, res) => {
console.log(req.params);
res.send("User route");
});
Suppose URL:
/users/10
Output:
{
id: "10"
}
Accessing Specific Param
Example:
app.get("/users/:id", (req, res) => {
console.log(req.params.id);
res.send("Done");
});
Output:
10
Multiple Params Example
Example:
app.get("/users/:userId/posts/:postId", (req, res) => {
console.log(req.params);
});
URL:
/users/5/posts/20
Output:
{
userId: "5",
postId: "20"
}
Why Params Are Powerful
Params allow:
dynamic routing
reusable endpoints
scalable APIs
Without them:
- backend routes become repetitive
Accessing Query Strings in Express
Express provides query parameters using:
req.query
Basic Query Example
Example:
app.get("/products", (req, res) => {
console.log(req.query);
res.send("Products");
});
URL:
/products?category=mobile
Output:
{
category: "mobile"
}
Accessing Specific Query Parameter
Example:
app.get("/products", (req, res) => {
console.log(req.query.category);
});
URL:
/products?category=mobile
Output:
mobile
Multiple Query Parameters
Example URL:
/products?category=mobile&page=2&sort=asc
Output:
{
category: "mobile",
page: "2",
sort: "asc"
}
Why Query Parameters Matter
Modern applications heavily use query strings for:
searching
pagination
sorting
filtering
Example — Search API
Example:
/products?search=iphone
Example — Pagination
Example:
/products?page=3
Example — Sorting
Example:
/products?sort=price
When to Use Params vs Query
This is one of the biggest practical backend decisions.
Use Params When
Use URL params for:
identifying specific resources.
Examples:
user ID
product ID
post ID
Good Param Examples
/users/10
/posts/5
/products/101
Use Query When
Use query parameters for:
optional filtering or modification.
Examples:
search
sorting
pagination
filtering
Good Query Examples
/products?page=2
/products?sort=asc
/products?category=electronics
Real API Thinking
Suppose API:
/users/5
This clearly identifies:
one specific user.
But:
/users?page=2
does not identify one user.
It changes:
how user list should be returned.
Combining Params and Query Together
Both can be used together.
Example:
/users/5/posts?page=2
Here:
5→ parampage=2→ query
Express Example
Example:
app.get("/users/:id/posts", (req, res) => {
console.log(req.params.id);
console.log(req.query.page);
res.send("Done");
});
URL:
/users/5/posts?page=2
Output
5
2
Common Beginner Mistake
Many beginners confuse:
params
query strings
Easy Trick to Remember
Params
Inside route path.
Query
After ?
Another Common Mistake
People often try accessing query values using:
req.params
instead of:
req.query
Both are different.
Why Understanding This Matters
Modern APIs heavily depend on:
dynamic routing
filtering
searching
pagination
And URL/query handling becomes core backend knowledge.
Final Understanding
URL parameters are dynamic values placed directly inside route paths and are mainly used to identify specific resources.
Query parameters are optional key-value pairs added after ? in URLs and are mainly used for:
filtering
searching
sorting
pagination
In :contentReference[oaicite:1]{index=1}:
URL params are accessed using
req.paramsQuery params are accessed using
req.query
And understanding when to use params vs query strings is extremely important for designing clean and scalable APIs.
Comments
Join the discussionNo comments yet. Be the first to comment.