Filtering and Searching
Collection endpoints should use query parameters for filtering.
Examples:
/products?category=books/users?status=active/orders?createdAfter=2026-10-01
For multiple filters, define a predictable syntax. Avoid allowing arbitrary database expressions directly from clients.
Search is conceptually different from exact filtering. /products?q=react may perform full-text or relevance-based search, while /products?category=books is an exact filter.
Always validate query parameters and translate them into safe database operations rather than concatenating raw input into database queries.
Query Parameter Handling
const { status = 'active', limit = '20' } = req.query;
const parsedLimit = Math.min(Number(limit), 100);
const users = await userService.find({
status,
limit: parsedLimit
});💡 Query parameters are parsed and constrained before reaching the service or database layer.