Back to blog
ExpressJs

URL Parameters vs Query Strings in Express.js

May 10, 2026 2 min read

What Are URL Parameters?

URL parameters are dynamic values inside the URL path.

They usually identify a specific resource.


Example

/users/15

Here:

15

is the URL parameter.


URL Structure Breakdown

flowchart LR
    A[/users/15]
    A --> B[/users = route]
    A --> C[15 = parameter]


Express Route Example

app.get("/users/:id", (req, res) => {
  res.send(`User ID: ${req.params.id}`);
});


Accessing URL Parameters

Use:

req.params


Example

app.get("/products/:productId", (req, res) => {
  console.log(req.params);

  res.send(req.params.productId);
});


URL

/products/50


Output

50


What Are Query Strings?

Query strings are optional values added after ? in a URL.

They are usually used for:

  • Filtering

  • Sorting

  • Searching

  • Pagination


Example

/products?category=shoes&sort=price


URL Breakdown

flowchart LR
    A[/products] --> B[?category=shoes]
    B --> C[&sort=price]


Accessing Query Strings in Express

Use:

req.query


Example

app.get("/products", (req, res) => {
  console.log(req.query);

  res.send(req.query.category);
});


URL

/products?category=shoes


Output

shoes


Params vs Query Strings

FeatureURL ParamsQuery Strings
PurposeIdentify resourceModify/filter response
RequiredUsually yesUsually optional
PositionInside URL pathAfter ?
Example/users/15?sort=asc

Practical Examples

URL Parameters → Identifiers

User Profile

/users/25

25 identifies a specific user.


Blog Post

/posts/100

100 identifies a specific post.


Query Strings → Filters or Modifiers

Search

/search?q=laptop


Pagination

/products?page=2


Sorting

/products?sort=price


Params vs Query Visualization

flowchart TD
    A[/users/15] --> B[15 = Identifier]
    C[/products?category=shoes] --> D[category = Filter]


Using Multiple Query Parameters

/products?category=phones&sort=price&page=2


Express Example

app.get("/products", (req, res) => {
  const category = req.query.category;
  const sort = req.query.sort;

  res.send(`${category} - ${sort}`);
});


Output

phones - price


Using Multiple URL Parameters

app.get("/users/:userId/orders/:orderId", (req, res) => {
  res.json(req.params);
});


URL

/users/15/orders/200


Output

{
  "userId": "15",
  "orderId": "200"
}


When to Use Params vs Query

SituationUse
Specific resourceParams
Search/filteringQuery
PaginationQuery
User IDParams
Product category filterQuery

Common Beginner Mistake

Incorrect:

/users?id=15

when identifying a specific user.

Better:

/users/15


Real-World API Examples

API EndpointType
/users/10URL Param
/products?page=2Query
/posts/50/commentsURL Param
/search?q=nodejsQuery

Combined Example

/users/15/orders?status=completed


Meaning

PartPurpose
15User identifier
status=completedFilter

Express Example

app.get("/users/:id/orders", (req, res) => {
  const userId = req.params.id;
  const status = req.query.status;

  res.send(`User: ${userId}, Status: ${status}`);
});


Key Takeaways

ConceptSummary
URL ParamsIdentify specific resources
Query StringsFilters/modifiers
req.paramsAccess route params
req.queryAccess query strings
Params Example/users/15
Query Example?page=2

Final Notes

A simple rule:

  • Params identify what

  • Query strings modify how

Examples:

/products/10

Specific product.

/products?category=phones

Filtered product list.


0 Comments

Sign in to join the conversation

No comments yet. Be the first to comment!