Express.js — Query Parameters (req.query), Filtering & Pagination
📌 Covered in this chapter:
Query Parameters · req.query · Search Queries · Filtering · Sorting · Pagination · Default Fallbacks
Welcome to Express.js — Query Parameters (req.query), Filtering & Pagination in our Express.js Complete Masterclass! Parse URL query strings for search, filtering, sorting, and pagination controls.
1Core Architectural Concepts of Query Parameters (req.query), Filtering & Pagination
Query parameters pass key-value pairs following `?` in the URL (e.g. `/items?category=books&page=1&limit=10`). Express parses these parameters into `req.query` for search, filtering, and pagination.
2Key Technical Objectives & Specs
📚 Technical Learning Specs:
- Master the underlying Node.js event loop mechanics for Query Parameters (req.query), Filtering & Pagination.
- Implement non-blocking, asynchronous execution pipelines in compliance with production API standards.
- Enforce strict OWASP Top 10 API security guidelines and performance optimizations.
3Technical Specification Matrix
| URL Query String | Parsed req.query Object | Primary Application |
|---|---|---|
| `?page=2&limit=20` | `{ page: "2", limit: "20" }` | Database Pagination |
| `?sort=price&order=desc` | `{ sort: "price", order: "desc" }` | Data Result Sorting |
| `?search=express` | `{ search: "express" }` | Search Keyword Filtering |
4Basic Code Implementation
JavaScript / Express.js — Basic Query Parameters (req.query), Filtering & Pagination
import express from 'express';
const app = express();
// GET /api/search?q=express&limit=5
app.get('/api/search', (req, res) => {
const { q = '', limit = 10, page = 1 } = req.query;
res.json({
query: q,
page: Number(page),
limit: Number(limit)
});
});
5Production Implementation & Architecture Pattern
JavaScript / Express.js — Production Query Parameters (req.query), Filtering & Pagination
// Dynamic Database Filter & Sort Generator
import express from 'express';
const app = express();
app.get('/api/v1/products', (req, res) => {
const { category, minPrice, sort = 'createdAt' } = req.query;
const filter = {};
if (category) filter.category = category;
if (minPrice) filter.price = { $gte: Number(minPrice) };
res.json({ filterApplied: filter, sortBy: sort });
});
6Internal Execution Engine Pipeline
URL: /api/courses?sort=price&page=2 -> Express Query Parser -> req.query = { sort: "price", page: "2" }
7Common Developer Anti-Patterns & Security Pitfalls
⚠️ Anti-Patterns to Avoid
- Trusting raw `req.query` parameters without sanitizing them against SQL/NoSQL injection.
- Failing to supply default fallback values for pagination parameters (`page` and `limit`).
8Frequently Asked Technical Interview Questions (Q&A)
❓ Question: Difference between req.params and req.query?
Answer: `req.params` represents path segments identifying specific resources (`/users/42`). `req.query` represents optional filtering, sorting, or pagination modifiers (`?sort=asc&page=2`).
9Hands-On Practical Engineering Challenge
🎯 Hands-On Challenge:
Build an endpoint `/api/catalog` that parses `category`, `search`, `page`, and `limit` query parameters with default fallbacks.