Non vedo molta differenza tra i parametri e le stringhe di query nell'URL. Allora qual è la differenza e quando dovrebbe essere usato uno sull'altro?
Non vedo molta differenza tra i parametri e le stringhe di query nell'URL. Allora qual è la differenza e quando dovrebbe essere usato uno sull'altro?
Risposte:
Il componente query è indicato dal primo ?
in un URI. "Stringa di query" potrebbe essere un sinonimo (questo termine non è utilizzato nello standard URI).
Alcuni esempi di URI HTTP con componenti di query:
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
( elenco di caratteri consentiti nel componente query )
Il "formato" del componente query spetta agli autori dell'URI. Una convenzione comune ( ma nient'altro che una convenzione, per quanto riguarda lo standard URI ¹) è quella di utilizzare il componente query per le coppie chiave-valore, aka. parametri , come nell'ultimo esempio sopra: bar1=a&bar2=b
.
Tali parametri potrebbero anche apparire negli altri componenti URI, ovvero il percorso² e il frammento. Per quanto riguarda lo standard URI, sta a te decidere quale componente e quale formato utilizzare.
URI di esempio con parametri nel percorso, nella query e nel frammento:
http://example.com/foo;key1=value1?key2=value2#key3=value3
¹ Lo standard URI dice sul componente query :
[…] I componenti di query sono spesso utilizzati per trasportare informazioni di identificazione sotto forma di coppie "chiave = valore" […]
² Lo standard URI dice sul componente path :
[…] I caratteri riservati punto e virgola (";") e uguale ("=") vengono spesso utilizzati per delimitare i parametri e i valori dei parametri applicabili a quel segmento. Il carattere riservato virgola (",") viene spesso utilizzato per scopi simili.
I parametri sono coppie chiave-valore che possono essere visualizzate all'interno del percorso dell'URL e iniziano con un punto e virgola ( ;
).
La stringa della query viene visualizzata dopo il percorso (se presente) e inizia con un punto interrogativo ( ?
).
Sia i parametri che la stringa di query contengono coppie chiave-valore.
In una GET
richiesta, i parametri vengono visualizzati nell'URL stesso:
<scheme>://<username>:<password>@<host>:<port>/<path>;<parameters>?<query>#<fragment>
In una POST
richiesta, i parametri possono apparire nell'URL stesso, ma anche nel flusso di dati (noto come contenuto).
La stringa di query fa sempre parte dell'URL.
I parametri possono essere form-data
nascosti nel flusso di dati quando si utilizza il metodo POST in modo che non vengano visualizzati nell'URL. Sì, una POST
richiesta può definire i parametri come dati del modulo e nell'URL, e questo non è incoerente perché i parametri possono avere diversi valori.
Finora non ho trovato spiegazioni per questo comportamento. Immagino che a volte potrebbe essere utile "mostrare" i parametri di una POST
richiesta, o anche lasciare che il codice che gestisce una GET
richiesta condivida alcune parti con il codice che gestisce a POST
. Ovviamente questo può funzionare solo con il codice del server che supporta i parametri in un URL.
Fino a quando non avrai approfondimenti migliori, ti suggerisco di utilizzare i parametri solo nel form-data
flusso di dati delle POST
richieste.
Fonti: