1. Список HTTP-методів

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

Над яким ресурсом? Справа в тому, що на початку існування всесвітньої павутини сервери просто зберігали HTML-файли, отже, запит робився до такого файлу і описував певну дію, яку потрібно зробити з ресурсом/файлом.

Стандарт HTTP визначає такі методи:

# Метод Опис
1 GET Використовується для запиту на вміст вказаного ресурсу.
2 POST Використовується для передачі даних із клієнта на сервер. Змінює стан ресурсу на сервері.
3 PUT Використовується для передачі даних із клієнта на сервер. Створює новий ресурс на сервері.
4 DELETE Видаляє вказаний ресурс на сервері.
5 HEAD Аналогічний до GET, але тіло відповіді відсутнє. Потрібен для отримання заголовків відповіді
6 OPTIONS Запитує в сервера список методів, що підтримуються для зазначеного ресурсу.
7 TRACE Службовий метод. Дозволяє дізнатися, чи не змінюють запит сервери, якими він проходить.
8 CONNECT Службовий метод. Використовується для встановлення захищеного з'єднання.

2. Метод GET

Метод GET – найпопулярніший HTTP-метод. Саме його викликає браузер, коли надсилає запит на сервер по чергову сторінку.

Наприклад, ви перейшли в браузері за посиланням http://javarush.com/path/resource?param1=value1&param2=value2, — тоді браузер надішле на сервер JavaRush HTTP-запит, який буде починатися з такої starting line:


        GET /path/resource?param1=value1&param2=value2 HTTP/1.1
    

В результаті сервер повинен буде надіслати браузеру HTTP-відповідь, в якій написати статус запиту, а також надіслати ресурс, на який робиться запит.

Мається на увазі, що багаторазовий виклик методу GET не змінює стан сервера, і сервер щоразу повинен повертати ту саму відповідь. Тому в протоколі закладено хитре керування кешуванням об'єкта.

По-перше, ресурси, що отримуються за допомогою запиту GET, браузер може кешувати на своїй стороні на власний розсуд (але є нюанси).

По-друге, при надсиланні запиту на сервер можна вказати спеціальний заголовок If-Modified-Since та дату. Якщо ресурс чи документ, на чиє отримання робився запит, змінився із зазначеної дати, то сервер його надішле. Якщо не змінився, то тіло ресурсу не передається. Мається на увазі, що воно закешоване на клієнта.

Кешування сторінок (GET-запитів) використовується постійно, тому раджу розібратися в цьому питанні.

3. Методи POST та PUT

Метод POST використовується для того, щоб змінити ресурс на сервері. Наприклад, коли ви завантажуєте картинку на сервер, ваш браузер надсилає запит POST.

Розглянемо HTTP-запит, який почнеться з такої starting line:


POST /path/resource?param1=value1&param2=value2 HTTP/1.1
headers…

<request body>

В результаті сервер повинен буде надіслати браузеру HTTP-відповідь, в якій напише статус запиту, а також надіслати змінений ресурс. Багаторазовий виклик методу POST змінює стан сервера, і сервер щоразу може повертати різну відповідь.

GET і POST – два найпоширеніші запити в інтернеті. Щоб тобі було простіше запам'ятати, як працюють методи, розглянемо їх у таблиці:

GET POST PUT
Запит Лише URL URL та тіло запиту URL та тіло запиту
Відповідь Код та тіло відповіді Код та тіло відповіді Код відповіді

Детальніше про POST-запит ти можеш почитати за цим посиланням.

4. Метод DELETE

Ну і нарешті інформація щодо методу DELETE. Тут узагалі все просто.

Скажімо, ми хочемо видалити певний ресурс на сервері. Надсилаємо йому запит типу:


        DELETE  /path/resource?param1=value1&param2=value2 HTTP/1.1
    

Після отримання цього запиту сервер видаляє зазначений ресурс. Якщо, звісно, ти маєш права на його видалення.