Lição 3
URLs relativas e normalização
Resolva caminhos relativos, preserve intenção e evite mudanças canônicas acidentais.
Nem toda URL que você encontra é absoluta. HTML, roteadores, redirects e arquivos de configuração frequentemente usam URLs relativas.
/account/settings
../images/logo.png
?page=2
URLs relativas precisam de uma base antes de serem resolvidas.
A base importa
Dada esta base:
https://example.com/docs/guides/url/
../api/ resolve para:
https://example.com/docs/guides/api/
Se a base mudar para /docs/guides/url, sem barra final, o resultado pode mudar porque o último segmento pode ser tratado como arquivo.
Normalização
Normalização torna URLs equivalentes mais consistentes. Exemplos:
- Remover portas padrão
- Resolver segmentos
.e.. - Colocar hosts em minúsculas
- Ordenar parâmetros para forma canônica
Normalização é útil, mas pode ser perigosa quando identidade byte a byte importa.
Preserve a intenção
Evite normalizar URLs assinadas, chaves de cache, redirects OAuth ou callbacks de terceiros sem conhecer as regras canônicas exatas. Uma reescrita aparentemente inofensiva pode invalidar uma assinatura ou mudar o endpoint que recebe a requisição.
O parsing ajuda porque permite ver o que vai mudar antes de reconstruir a URL.