Parámetros de Consulta y Búsqueda
Los parámetros de consulta URL — la parte ?clave=valor de una URL — permiten a los usuarios filtrar y buscar sin enviar un formulario. /posts?tag=tutorial muestra solo las publicaciones etiquetadas. req.query() los lee todos.
req.query() lee ?clave=valor de la URL, o devuelve string vacío si está ausente:
GET "/posts" :\n string tag = req.query("tag")\n string sql = ""\n string params = "[]"\n\n if tag != ""\n sql = "SELECT title, slug FROM posts WHERE tag = ? ORDER BY created_at DESC"\n params = "[\\"" + tag + "\\"]"\n else\n sql = "SELECT title, slug FROM posts ORDER BY created_at DESC"\n\n string result = db.query(sql, params)GET /posts → all posts\nGET /posts?tag=tips → only posts tagged "tips"req.query("tag") devuelve el valor de ?tag= o string vacío si falta. Construye diferentes ramas SQL basándote en si el filtro está establecido — pero usa siempre marcadores ?, nunca concatenes valores de consulta directamente en SQL.
Muestra el filtro activo en la página para que los usuarios sepan qué están viendo:
string heading = "All Posts"\n if tag != ""\n heading = "Posts tagged: " + tag\n\n html:\n {heading}
GET /posts?tag=tips → heading reads: Posts tagged: tipsLa variable heading se auto-escapa al ser interpolada, así que si alguien pone HTML en la URL, se renderiza como texto inofensivo, no como código ejecutable. Usa siempre la interpolación simple (sin !) para los valores proporcionados por el usuario en la salida.
Resumen rápido
- req.query("clave") lee ?clave=valor de la URL — devuelve string vacío si está ausente
- Comprueba si el valor no está vacío antes de decidir qué rama SQL ejecutar
- Usa siempre marcadores ? — nunca concatenes valores de la cadena de consulta en SQL
- La interpolación simple auto-escapa la entrada del usuario en la salida HTML — segura contra XSS