Lição 2

Modelos de parâmetros de query

Entenda chaves repetidas, valores vazios, flags, arrays e diferenças entre frameworks.

Query strings parecem pares simples de chave e valor, mas frameworks diferentes as modelam de formas diferentes.

?tag=api&tag=json&draft=&preview

Um parser pode enxergar:

  • tag como dois valores
  • draft como string vazia
  • preview como flag ou valor vazio

Chaves repetidas

Chaves repetidas são válidas em uma query string:

?tag=frontend&tag=backend

Alguns frameworks mantêm o último valor. Outros coletam todos em um array. Outros exigem uma convenção como tag[].

Valores vazios e flags

Estas formas não são idênticas em todo sistema:

?debug
?debug=
?debug=true

Se o servidor trata presença como true, ?debug pode bastar. Se espera uma string booleana, talvez precise de debug=true.

Ordem

Para filtros comuns, a ordem dos parâmetros geralmente não importa. Para assinaturas e chaves de cache, pode importar muito. URLs assinadas costumam exigir ordem canônica e percent-encoding exato.

Modelo mental mais seguro

Não assuma que fazer parse e reconstruir uma query é inofensivo. Decida como sua aplicação trata:

  • Chaves repetidas
  • Strings vazias
  • Valores ausentes
  • Sintaxe de array
  • Ordenação
  • Codificação de espaços e sinais de mais

Quando essas regras ficam explícitas, bugs de URL ficam muito mais fáceis de reproduzir.

Voltar à visão geral do curso