javascript / expert
Snippet
Proxy-Based Dynamic Route Search Parameter Validation and Array Transformation
Handling URL search parameters in Next.js Route Handlers often involves repetitive parsing and sanitation. Using a JavaScript `Proxy` trap around `URLSearchParams` intercepts property read operations, enforcing strict key whitelisting and returning sanitized array structures for query strings containing comma-delimited lists.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
export function createValidatedParamsProxy(searchParams, allowedKeys) {return new Proxy(searchParams, {get(target, prop) {if (typeof prop === 'string' && !allowedKeys.includes(prop)) {return undefined;}const values = target.getAll(String(prop));return values.flatMap(v => v.split(',')).map(v => v.trim());}});}
nextjs
Breakdown
1
return new Proxy(searchParams, {
Instantiates a JavaScript Proxy trap around URLSearchParams to intercept property access dynamically.
2
return values.flatMap(v => v.split(',')).map(v => v.trim());
Flattens multi-value parameters and comma-separated lists into a clean array of trimmed string items.