Skip to main content

URL Parameters vs Query Strings in Express.js

Updated 5 min readMarkdown

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:

  • 10 is 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:

  • :id is 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=mobile is 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 → param

  • page=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.params

  • Query params are accessed using req.query

And understanding when to use params vs query strings is extremely important for designing clean and scalable APIs.

1 view

No comments yet. Be the first to comment.