JavaRush /Курсы /JSP & Servlets /HTTP-методы

HTTP-методы

JSP & Servlets
9 уровень , 3 лекция
Открыта

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
    

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

Комментарии (16)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Anastasia Уровень 51
11 марта 2025
Коротко: - GET — получи (загрузи данные). - POST — отправь данные. - PUT — создай новый ресурс. - DELETE — удали ресурс. - HEAD — только заголовки (без данных). - OPTIONS — узнай, что можно делать с ресурсом. - TRACE — проверь, что происходит с запросом по пути. - CONNECT — установи защищённое соединение.
Виктор Уровень 106 Expert
7 июня 2024
Почему нет PATCH?
Надежда Уровень 104 Expert
21 июня 2023
PUT (создание или обновление): Метод PUT используется для создания или обновления ресурса на сервере. Когда клиент отправляет PUT-запрос, он указывает серверу, что необходимо создать или обновить ресурс с предоставленными данными. Если ресурс уже существует, PUT-запрос обновит его данные. Если ресурс отсутствует, сервер может создать новый ресурс с указанными данными. PUT-запросы являются "идемпотентными", что означает, что повторные PUT-запросы с теми же данными не должны иметь дополнительных эффектов. POST (отправка данных): Метод POST используется для отправки данных на сервер для обработки. Когда клиент отправляет POST-запрос, он передает данные в теле запроса, которые сервер может использовать для выполнения определенных действий, таких как создание нового ресурса, обновление существующего ресурса или выполнение какой-либо операции. POST-запросы не являются "идемпотентными", что означает, что повторные POST-запросы с теми же данными могут иметь разные эффекты или приводить к созданию дублирующихся данных. Разница между методами PUT и POST заключается в их назначении и семантике. PUT используется для явного создания или обновления ресурса, тогда как POST используется для отправки данных на сервер для обработки без явного указания идентификатора ресурса или требования обновления. Выбор между PUT и POST зависит от контекста и требований вашего веб-приложения или API.
Екатерина Уровень 100 Expert
25 июля 2023
Забыли добавить: Если забыть про стандарты Restful API....
Евгений Уровень 90
14 октября 2022
Где PATCH?
GrekZorba Уровень 24
10 октября 2022
Перепутали POST and PUT
8 ноября 2022
Где именно, подскажите.
GrekZorba Уровень 24
18 ноября 2022
Anonymous #3129578 Уровень 108
27 марта 2023
Прикол в том, что оба варианта не догмы. Создавать и изменять можно любым. Но есть нюансы.
Andrey Panchenko Уровень 26
17 сентября 2022
Из вики: Фундаментальное различие методов POST и PUT заключается в понимании предназначений URI ресурсов. Метод POST предполагает, что по указанному URI будет производиться обработка передаваемого клиентом содержимого. Используя PUT, клиент предполагает, что загружаемое содержимое соответствует находящемуся по данному URI ресурсу.
egorabramov216 Уровень 23
23 июня 2022
"Чтобы тебе было было запомнить, как работают методы, рассмотрим такую таблицу..."
Pavel Bely Уровень 1
3 июня 2022
по моему вы пут и пост перепутали
Herman Kulik Уровень 41
28 июня 2022
тоже хотел написать
Oleg Khilko Уровень 51
14 августа 2022
🤣 я с вами)
8 ноября 2022
Уточните, пожалуйста, где именно?
19 декабря 2022
Кажется Вы никогда не поменяете описание PUT и POST...