GET

Метод HTTP

Специфікація HTTP-методу GET

Метод GET запитує передачу поточного вибраного представлення для цільового ресурсу. GET є основним механізмом отримання інформації та основною метою майже всіх оптимізацій продуктивності. Тому, коли говорять про отримання якоїсь ідентифікованої інформації через HTTP, зазвичай мають на увазі саме GET-запит.

Спокусливо думати, що ідентифікатори ресурсів - це імена шляхів до віддалених файлових систем, а представлення - це копії вмісту таких файлів. Насправді, саме так реалізовано багато ресурсів (див. розділ 9.1 щодо відповідних міркувань безпеки). Однак на практиці таких обмежень не існує. Інтерфейс HTTP для ресурсу з такою ж ймовірністю може бути реалізований як дерево об'єктів контенту, програмне представлення різних записів бази даних або шлюз до інших інформаційних систем. Навіть якщо механізм відображення URI прив'язаний до файлової системи, сервер-джерело може бути налаштований на виконання файлів із запитом на вході і надсилання результату у вигляді представлення, а не на пряму передачу файлів. Незалежно від цього, лише сервер-джерело повинен знати, як кожен з його ідентифікаторів ресурсу відповідає реалізації і як кожна реалізація вибирає та надсилає поточне представлення цільового ресурсу у відповідь на GET.

Клієнт може змінити семантику GET на "запит діапазону", запитуючи передачу лише певної частини (частин) вибраного представлення, надсилаючи поле заголовка діапазону у запиті (RFC7233).

Вантаж у повідомленні запиту GET не має визначеної семантики; надсилання тіла запиту GET може призвести до відхилення запиту деякими існуючими реалізаціями.

Відповідь на запит GET можна кешувати; кеш МОЖЕ використовувати його для задоволення наступних запитів GET і HEAD, якщо інше не вказано в полі заголовка Cache-Control (розділ 5.2 RFC7234).

Метод HTTP GET визначено в розділі 4.3.1 документа RFC 7231 Робочої групи з розробки Інтернету (IETF) і Консорціуму всесвітньої павутини (W3C).

Опис методу GET

Метод GET протоколу HTTP можна порівняти з цифровим бібліотекарем. Він ввічливо просить сервер представити дані без внесення будь-яких змін до самого даних - це чисто пасивний запит.

Що робить метод GET особливим?

  1. Узгодженість: Уявіть, що ви просите бібліотекаря одну й ту ж книгу кілька разів - ви отримаєте ту ж книгу щоразу. Те ж саме стосується запиту GET: він стабільно дає той же результат.
  2. Читати, а не писати: Запит GET має характер спостерігача. Він дивиться на дані, але не змінює їх.
  3. Інформація в URL: Сприймайте URL як адресу або картку індексу. Він вказує, яку книгу або інформацію ви шукаєте. Але обережно: ці картки не повинні містити приватних нотаток, так як їх можуть переглядати інші.
  4. Швидкі та ефективні відповіді: Завдяки можливості кешування відповідей, метод GET може швидко відповідати на повторні запити, ніби добре організований бібліотекар, який точно знає, де знаходиться кожна книга.

Але є й обмеження:

  1. Обмежений простір для нотаток: В URL є лише стільки місця для інформації. Це ніби писати на маленькій картці індексу.
  2. Немає секретів: Оскільки URL видно і їх можна зберігати, ви не повинні записувати на них конфіденційну інформацію.
  3. Немає втручання: Спостерігач не впливає на те, що він спостерігає. Тому метод GET не повинен використовуватися для зміни даних. У нашому цифровому наборі інструментів для цього є інші засоби.

Загалом, метод GET - надійний та ключовий інструмент у цифровому просторі, який допомагає нам ефективно та безпечно отримувати інформацію.

Приклад для HTTP-методу GET

Request header:
GET /data HTTP/1.1
Host: api.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)Chrome/58.0.3029.110 Safari/537
Accept: application/json
Accept-Language: de-DE,de;q=0.5
Connection: keep-alive
Cache-Control: max-age=0
Response header:
Content-Type: application/json
Date: Mon, 31 July 2023 14:58:12 GMT
Server: Apache/2.4.7 (Ubuntu)
Cache-Control: no-cache