Nie widzę dużej różnicy między parametrami a ciągami zapytań w adresie URL. Jaka jest więc różnica i kiedy należy użyć jednego nad drugim?
url
query-string
url-parameters
Konst
źródło
źródło
Odpowiedzi:
Składnik zapytania jest oznaczony jako pierwszy
?
w identyfikatorze URI. „Ciąg zapytania” może być synonimem (termin ten nie jest używany w standardzie URI).Kilka przykładów identyfikatorów URI HTTP ze składnikami zapytania:
( lista dozwolonych znaków w składniku zapytania )
„Format” składnika zapytania zależy od autorów identyfikatora URI. Powszechną konwencją ( ale niczym więcej niż konwencją, jeśli chodzi o standard URI1) jest użycie komponentu zapytania dla par klucz-wartość, czyli inaczej. Parametry , podobnie jak w poprzednim przykładzie:
bar1=a&bar2=b
.Takie parametry mogą również pojawić się w innych komponentach URI, tj. Path² i fragmencie. Jeśli chodzi o standard URI, to od Ciebie zależy, który komponent i jakiego formatu użyć.
Przykładowy identyfikator URI z parametrami w ścieżce, zapytaniu i fragmencie:
¹ Standard URI mówi o składniku zapytania :
² Standard URI mówi o składniku ścieżki :
źródło
Parametry to pary klucz-wartość, które mogą pojawić się w ścieżce adresu URL i zaczynają się od znaku średnika (
;
).Ciąg zapytania pojawia się po ścieżce (jeśli istnieje) i zaczyna się znakiem zapytania (
?
).Zarówno parametry, jak i ciąg zapytania zawierają pary klucz-wartość.
W
GET
żądaniu parametry pojawiają się w samym adresie URL:W
POST
żądaniu parametry mogą pojawić się w samym adresie URL, ale także w strumieniu danych (zwanym treścią).Ciąg zapytania jest zawsze częścią adresu URL.
Parametry mogą być ukryte w
form-data
strumieniu danych podczas korzystania z metody POST, więc mogą nie pojawiać się w adresie URL. Tak,POST
żądanie może definiować parametry jako dane formularza oraz w adresie URL, i nie jest to niespójne, ponieważ parametry mogą mieć kilka wartości.Jak dotąd nie znalazłem wytłumaczenia tego zachowania. Wydaje mi się, że czasami przydatne może być „odkrycie” parametrów z
POST
żądania, a nawet pozwolenie kodowi obsługującemuGET
żądanie współdzielić niektóre części z kodem obsługującym plikPOST
. Oczywiście może to działać tylko z kodem serwera obsługującym parametry w adresie URL.Dopóki nie uzyskasz lepszego wglądu, sugeruję używanie parametrów tylko w
form-data
strumieniu danychPOST
żądań.Źródła:
Co każdy programista powinien wiedzieć o adresach URL
RFC 3986
źródło