4.1 Список HTTP-методов

Самым первым словом в HTTP-запросе идет имя метода. Тут даже есть некоторая аналогия с вызовом методов в Java. Метод в HTTP-запросе определяет основную операцию, которую нужно выполнить над ресурсом.

Над каким же ресурсом? Все дело в том, что на заре всемирной паутины сервера просто хранили HTML-файлы, соответственно, запрос был к такому файлу и описывал некоторое действие, которое нужно произвести с ресурсом/файлом.

Стандарт HTTP задает такие методы:

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

4.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-запросов) используется постоянно, так что советую разобраться в этом вопросе.

4.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.4 Метод DELETE

Ну и наконец информация по методу DELETE. Тут вообще все просто.

Например, мы хотим удалить определенный ресурс на сервере. Посылаем ему запрос вида:


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

После получения этого запроса сервер удалит указанный ресурс. Если, конечно, у тебя есть права на его удаление.