Não vejo muita diferença entre os parâmetros e as strings de consulta no URL. Então, qual é a diferença e quando um deve ser usado em vez do outro?
Não vejo muita diferença entre os parâmetros e as strings de consulta no URL. Então, qual é a diferença e quando um deve ser usado em vez do outro?
Respostas:
O componente de consulta é indicado pelo primeiro ?
em um URI. "Query string" pode ser um sinônimo (este termo não é usado no padrão URI).
Alguns exemplos de URIs HTTP com componentes de consulta:
http://example.com/foo?bar
http://example.com/foo/foo/foo?bar/bar/bar
http://example.com/?bar
http://example.com/?@bar._=???/1:
http://example.com/?bar1=a&bar2=b
( lista de caracteres permitidos no componente de consulta )
O "formato" do componente de consulta fica por conta dos autores do URI. Uma convenção comum ( mas nada mais que uma convenção, no que diz respeito ao padrão URI ¹) é usar o componente de consulta para pares chave-valor, também conhecido como. parâmetros , como no último exemplo acima: bar1=a&bar2=b
.
Esses parâmetros também podem aparecer nos outros componentes do URI, ou seja, o caminho² e o fragmento. No que diz respeito ao padrão URI, cabe a você qual componente e qual formato usar.
URI de exemplo com parâmetros no caminho, a consulta e o fragmento:
http://example.com/foo;key1=value1?key2=value2#key3=value3
¹ O padrão URI diz sobre o componente de consulta :
[...] componentes de consulta são frequentemente usados para transportar informações de identificação na forma de pares "chave = valor" [...]
² O padrão URI diz sobre o componente do caminho :
[…] O ponto-e-vírgula (";") e os caracteres reservados de igual ("=") são freqüentemente usados para delimitar parâmetros e valores de parâmetros aplicáveis a esse segmento. O caractere reservado de vírgula (",") é freqüentemente usado para fins semelhantes.
Os parâmetros são pares de valores-chave que podem aparecer dentro do caminho do URL e começam com um ponto e vírgula ( ;
).
A string de consulta aparece após o caminho (se houver) e começa com um caractere de ponto de interrogação ( ?
).
Os parâmetros e a string de consulta contêm pares de valores-chave.
Em uma GET
solicitação, os parâmetros aparecem no próprio URL:
<scheme>://<username>:<password>@<host>:<port>/<path>;<parameters>?<query>#<fragment>
Em uma POST
solicitação, os parâmetros podem aparecer na própria URL, mas também no fluxo de dados (conhecido como conteúdo).
A string de consulta sempre faz parte do URL.
Os parâmetros podem ser enterrados no form-data
fluxo de dados ao usar o método POST para que eles não apareçam no URL. Sim, uma POST
solicitação pode definir parâmetros como dados do formulário e na URL, e isso não é inconsistente porque os parâmetros podem ter vários valores.
Não encontrei explicação para esse comportamento até agora. Acho que às vezes pode ser útil "mostrar" os parâmetros de uma POST
solicitação ou até mesmo deixar o código que manipula uma GET
solicitação compartilhar algumas partes com o código que trata a POST
. É claro que isso pode funcionar apenas com o código do servidor que oferece suporte a parâmetros em uma URL.
Até obter melhores insights, sugiro que você use parâmetros apenas no form-data
fluxo de dados de POST
solicitações.
Fontes: