Lección 2
Modelos de parámetros de consulta
Comprende claves repetidas, valores vacíos, flags, arrays y diferencias entre frameworks.
Las cadenas de consulta parecen pares clave-valor simples, pero distintos frameworks las modelan de forma distinta.
?tag=api&tag=json&draft=&preview
Un analizador podría ver:
tagcomo dos valoresdraftcomo cadena vacíapreviewcomo flag o como valor vacío
Claves repetidas
Las claves repetidas son legales en una cadena de consulta:
?tag=frontend&tag=backend
Algunos frameworks conservan el último valor. Algunos recopilan todos los valores en un array. Algunos requieren una convención de nomenclatura como tag[].
Valores vacíos y flags
Estos no son idénticos en todos los sistemas:
?debug
?debug=
?debug=true
Si el servidor trata la presencia como verdadero, ?debug puede bastar. Si espera una cadena booleana, puede necesitar debug=true.
Orden
Para filtrado ordinario, el orden de parámetros normalmente no importa. Para firmas y claves de caché, el orden puede importar mucho. Las URLs firmadas a menudo requieren un orden canónico y codificación porcentual exacta.
Modelo mental más seguro
No asumas que analizar y reconstruir una consulta es inofensivo. Decide cómo trata tu aplicación:
- Claves repetidas
- Cadenas vacías
- Valores ausentes
- Sintaxis de arrays
- Ordenación
- Codificación de espacios y signos más
Una vez que esas reglas son explícitas, los errores de URL son mucho más fáciles de reproducir.