How to use query string parameters — Basic
Optional filters and flags after ? in the URL (e.g. ?sort=desc&limit=10) are on req.query. Use for sorting, pagination, and search—not for resource IDs.
Learn: Query parameters are optional and unordered. They are ideal for ?sort=name&limit=20 or ?active=true. Validate and parse types (Number, Boolean) in the controller before passing options to the service. Do not confuse req.query with req.params: /pastes/5 uses params for id 5; /pastes?sort=desc uses query for sort.
Supplementary examples
Pagination query params
const page = Math.max(1, Number(req.query.page) || 1);
const pageSize = Math.min(100, Number(req.query.pageSize) || 20);
const offset = (page - 1) * pageSize;Pass query options to service
// GET /users/3/pastes?sort=desc
async function list(req, res, next) {
const options = {
userId: req.params.userId,
sort: req.query.sort,
limit: Number(req.query.limit) || 10,
};
const rows = await service.list(options);
res.json({ data: rows });
}Course example
// GET /pastes?sort=desc&limit=5
async function list(req, res, next) {
const sort = req.query.sort || "asc";
const limit = Number(req.query.limit) || 10;
const pastes = await service.list({
userId: req.params.userId,
sort,
limit,
});
res.json({ data: pastes });
}
Additional references & examples
- Express req.query
Parsed query string from the URL.
- Express.js guide
Routing, middleware order, and request/response lifecycle.