AZ Tools

Expansor de Plantillas URI (RFC 6570)

Red

Las plantillas URI de RFC 6570 describen cómo construir una URL a partir de variables, y están en todas partes: la API de GitHub, las plantillas de ruta de OpenAPI/Swagger y los enlaces de hipermedia (HAL/JSON-LD) las usan. Una plantilla como `https://api.example.com{/version}/users{/id}{?fields*,page}` se expande contra un conjunto de variables a una URL real. Esta herramienta implementa los cuatro niveles de la especificación — expansión simple `{var}`, los operadores reservado (`{+var}`) y fragmento (`{#var}`), etiqueta (`.`), ruta (`/`), parámetro estilo-ruta (`;`), consulta de formulario (`?`) y continuación (`&`) — más los modificadores explode (`*`) y prefijo (`:n`) y el manejo correcto de valores vacíos e indefinidos. Proporciona las variables como un objeto JSON cuyos valores sean cadenas, números, listas o mapas clave/valor; la salida se codifica en porcentaje exactamente como exige el operador. Está verificada contra la suite completa de ejemplos de RFC 6570. Todo corre localmente — no se sube nada.

URL expandida

https://api.example.com/v2/users/42?fields=name&fields=email&page=1

Implementa los cuatro niveles de RFC 6570: operadores + : # . / ; ? & con modificadores explode (*) y prefijo (:n).

Cómo usar

  1. Escribe una plantilla URI con {llaves}, p. ej. {/path}{?query*}.
  2. Proporciona las variables como objeto JSON (cadenas, números, arrays u objetos).
  3. Lee la URL expandida y cópiala; ajusta plantilla o variables para ver el resultado en vivo.

Preguntas frecuentes

¿Qué significan los operadores?
El primer carácter dentro de las llaves elige un operador: ninguno = valores simples unidos por comas; `+` mantiene sin escapar los caracteres reservados; `#` hace un fragmento; `.` una etiqueta; `/` segmentos de ruta; `;` parámetros estilo-ruta `;name=value`; `?` una consulta de formulario `?name=value`; `&` una continuación de consulta. Cada uno controla su separador y si se incluyen los nombres.
¿Qué hacen `*` y `:n`?
`*` es el modificador explode: una lista o mapa se expande en componentes separados (p. ej. `{?list*}` → `?list=a&list=b` en vez de `?list=a,b`). `:n` es un modificador de prefijo que trunca un valor de cadena a los primeros n caracteres antes de codificar (p. ej. `{var:3}` de `value` → `val`).
¿Cómo paso listas y mapas?
Usa JSON: una lista es un array (`"fields": ["name","email"]`) y un mapa asociativo es un objeto (`"keys": {"semi": ";"}`). Cadenas y números son escalares. Una variable ausente, null, lista vacía u objeto vacío se trata como indefinida y no aporta nada a la salida.
¿Es correcta la codificación?
Sí — los valores se codifican en porcentaje según el conjunto permitido del operador. Los operadores simples y la mayoría codifican todo fuera del conjunto no reservado, mientras que `+` y `#` también dejan pasar los caracteres URL reservados (y los tripletes %XX existentes), igual que RFC 6570. La implementación pasa la tabla completa de ejemplos de la especificación.

Herramientas relacionadas