Metoda GET

Metoda GET

Metoda GET jest prawdopodobnie najczęściej używaną metodą w sieci. Służy ona do pobierania zasobu z określonego adresu URL. Może być cache’owana.

GETZależnie od nagłówków wysłanych razem z zapytaniem, wyróżniamy warunkowe i częściowe zapytania GET, które zachowują się następująco:

Warunkowe

Rekord lub zasób jest przesyłany tylko, gdy spełniony jest warunek ustawiony za pomocą dowolnego z nagłówków: If-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match lub If-Range. Jest ono użyteczne podczas korzystania z mechanizmu cache. Pozwala zmniejszyć ruch sieciowy wtedy, gdy nie ma potrzeby bezwarunkowego odświeżania wartości rekordu.

Częściowe

Gdy ustawiony jest nagłówek Range pobierany jest tylko fragment zasobu. Jest to przydatne do stopniowego pobierania dużych ilości danych. W szczególności, gdy dane te nie są przetwarzane całościowo po stronie klienta. Nie należy jednak nadużywać tego parametru dla zbyt małych zasobów, ponieważ narzut na rozpoczęcie i zakończenie połączenia oraz przesyłanie nagłówków może zmniejszyć zyski z tego mechanizmu.

Najpopularniejszy dla metody GET sposób przekazywania parametrów dla żądania to przesyłanie ich w adresie url do danego zasobu.

index.php?lang=pl&param1=2

W podanym przykładzie przekazywane są 2 parametry: lang o wartości ‘pl’ oraz param1 o wartości ‘2’. Ten sposób przesyłania dodatkowych informacji modyfikuje adres url, co umożliwia następujące zachowania:

  • linkowalność do specyficznych zapytań
    (dzięki temu można zdefiniować odnośniki uwzględniające parametry <a href=”showRecord?id=123″>Link</a>),
  • możliwość zapisu zakładek do danego zasobu,
  • uwzględnienie zasobu w mechanizmie cache (w szczególności, gdy parametry mają wpływ na treść odpowiedzi),
  • w przeglądarce umożliwiają zapamiętanie danego zasobu w historii przeglądania.

Niestety ten sposób przesyłania parametrów jest ograniczony przez maksymalną długość adresu URL. Zależy to od klienta lub przeglądarki, lecz można założyć, że nie powinien on mieć więcej niż 2000 znaków, co ogranicza liczbę i złożoność parametrów.

Zapytań typu GET należy używać, gdy:

  • pytamy serwer o pewne informacje,
  • potrzebujemy możliwości identyfikacji zasobów po adresie (w celu zapisania, przesłania tego adresu).

Z kolei nie należy ich używać, gdy:

  • wykonujemy interakcję z serwerem na zasadzie żądania wykonania pewnej akcji,
  • żądamy od serwera wykonania pewnej akcji,
  • wywołanie metody może powodować jakieś akcje (za wyjątkiem akcji niewidocznych dla klienta jak zapis historii zapytań).
Request Response
GET /foo/bar HTTP/1.1
Host: example.com
HTTP/1.1 200 OK
Date: …
Content-Type: text/html;charset=utf-8
Content-Length: 12345

<!DOCTYPE …