Wat is het verschil tussen URL-parameters en queryreeksen?

Ik zie niet veel verschil tussen de parameters en de querystrings in de URL. Dus wat is het verschil en wanneer moet de ene boven de andere worden gebruikt?


Antwoord 1, autoriteit 100%

De querycomponentwordt aangegeven door de eerste ?in een URI. “Query string” kan een synoniem zijn (deze term wordt niet gebruikt in de URI-standaard).

Enkele voorbeelden voor HTTP URI’s met querycomponenten:

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

(lijst met toegestane tekens in de querycomponent)

Het “formaat” van de querycomponent is aan de URI-auteurs. Een algemene conventie (maar niets meer dan een conventie, voor zover het de URI-standaard betreft¹) is om de querycomponent voor sleutel-waardeparen, ook bekend als. parameters, zoals in het laatste voorbeeld hierboven: bar1=a&bar2=b.

Dergelijke parameters kunnen ook voorkomen in de andere URI-componenten, d.w.z. het pad² en het fragment. Wat de URI-standaard betreft, is het aan jou welke component en welk formaat je gebruikt.

Voorbeeld-URI met parameters in het pad, de query en het fragment:

http://example.com/foo;key1=value1?key2=value2#key3=value3

¹ De URI-standaard zegt over de querycomponent:

[…] zoekcomponenten worden vaak gebruikt om identificerende informatie te dragen in de vorm van “key=value”-paren […]

² De URI-standaard zegt over de padcomponent:

[…] de puntkomma (“;”) en is gelijk aan (“=”) gereserveerde tekens worden vaak gebruikt om parameters en parameterwaarden af te bakenen die van toepassing zijn op dat segment. De komma (“,”) gereserveerde teken wordt vaak gebruikt voor soortgelijke doeleinden.


Antwoord 2, autoriteit 36%

Parameters zijn sleutel-waardeparen die in het URL-pad kunnen verschijnen en beginnen met een puntkomma (;).

Querytekenreeks verschijnt na het pad (indien aanwezig) en begint met een vraagteken (?).

Zowel parameters als queryreeks bevatten sleutel-waardeparen.

In een GET-verzoek verschijnen parameters in de URL zelf:

<scheme>://<username>:<password>@<host>:<port>/<path>;<parameters>?<query>#<fragment>

In een POST-verzoek kunnen parameters in de URL zelf verschijnen, maar ook in de datastroom (zogenaamde content).

Querytekenreeks maakt altijd deel uit van de URL.

Parameters kunnen worden begraven in de form-datadatastroom bij gebruik van de POST-methode, zodat ze mogelijk niet in de URL verschijnen. Ja, een POST-verzoek kan parameters definiëren als formuliergegevens enin de URL, en dit is niet inconsistent omdat parameters verschillende waarden kunnen hebben.

Ik heb tot nu toe geen verklaring gevonden voor dit gedrag. Ik denk dat het soms nuttig kan zijn om parameters van een POST-verzoek zichtbaar te maken, of zelfs de code die een GET-verzoek afhandelt, sommige delen te laten delen met de code die een POST. Dit kan natuurlijk alleen werken met servercode ondersteunende parameters in een URL.

Totdat u betere inzichten krijgt, raad ik u aan parameters alleen te gebruiken in de form-data-gegevensstroom van POST-verzoeken.

Bronnen:

Wat elke ontwikkelaar moet weten over URL’s

RFC 3986

Other episodes