1.2. Методы HTTP запросов

 

Введение и типы запросов

Работа веб приложений основана на простом принципе: запрос-ответ. Сервер вам ничего не отправит до тех пор, пока вы сами не запросите нужный вам ресурс. Причем запросы могут быть разными:

    • Получить определенную информацию, ресурс, файл из сервера
    • Изменить определенный ресурс на сервере
    • Удалить определенный ресурс на сервере
    • Создать определенный ресурс на сервере

Именно для таких типов запросов стандартом HTTP и были предусмотрены соответствующие методы:

    • GET – получение ресурса
    • POST – создание и обновление данных о ресурсе
    • PUT – создание и обновление данных о ресурсе
    • DELETE – удаление ресурса
    • TRACE – диагностика трассы
    • HEAD – аналог GET, используется для получения данных об объекте
    • OPTIONS – обмен некоторыми служебными данными перед непосредственным запросом

 

GET

GET самый распространенный метод. В основном используется для получения каких-либо ресурсов из сервера. Это может быть обычная HTML страница, файл или API запрос.

Очень часто вы можете видеть GET запрос в адресной строке браузера:

URL в адерсной строке браузера

GET может также содержать определенные параметры для уточнения своего запроса. На рисунке ниже изображен GET запрос с параметрами:

Фрагмент запроса HTTP и описание его полей

В начале идет сам метод, в нашем случае GET.

Затем относительный URL с параметрами. Параметры начинаются после знака “?” и имеют простую форму: параметр=значение. Все параметры разделяются символом “&”.

И в конце у нас идет версия протокола.

Далее следуют HTTP заголовки, о них мы поговорим в одном из следующих уроков.

Теоретически с помощью GET можно выполнять практически все действия, то есть получать данные, создавать, обновлять и удалять. Для этого достаточно ввести соответствующие параметры запрограммировать приложение. Однако на практике некоторые параметры могут содержать данные, которые должны быть скрыты от посторонних, кроме того, с помощью GET легче осуществить некоторые атаки. Поэтому GET используется только для получения данных из сервера, иногда с помощью него удаляют ресурсы из сервера.

 

HEAD

Данный метод аналогичен GET, однако в отличие от GET сервер в свой ответ не включает тело ответа. Ответ содержит только заголовки и ничего больше:

Приницип работы HTTP метода HEAD

 

HEAD используется для следующих целей:

    • Узнать присутствует ли запрашиваемый ресурс на сервере, не получая его
    • Проверить был запрашиваемые ресурс изменен с момента последнего доступа. Проверка осуществляется с помощью заголовков.

 

POST/PUT

Оба метода используются для отправки данных на сервер, то есть с помощью них можно создавать и изменять объекты на сервере. Обычно данные отправляются через форму на странице:

Принцип работы HTTP метода POST

Все данные отправляются в теле запроса, то есть в отличие от GET вы не увидите данные и параметры в адресной строке браузера. При использовании SSL соединения все данные полностью зашифрованы, что исключает их кражу.

Перед отправкой данных на сервер клиент устанавливает в заголовке Content-Type тип передаваемых данных. Это может простое текстовое сообщение, XML, JSON или бинарные данные.

Разница между PUT и POST в том, что повторное выполнение запроса PUT не вызывает побочных явлений, в отличие от POST.

Очень часто POST используется для авторизации пользователя на сервере.

 

DELETE

DELETE, как это понятно из названия удаляет требуемый ресурс на сервере:

Принцип работы HTTP метода DELETE

 

TRACE

Особенность метода TRACE в том, что он должен вернуться обратно отправителю, то есть, если соединение с сервером работает и метод разрешен на сервере, то всегда отправит полученный запрос без изменения обратно отправителю. Благодаря данной опции TRACE используется для диагностики соединения и отслеживания промежуточных узлов, например прокси-серверов.

Некоторые прокси-серверы вставляют свои заголовки и этот факт можно установить с помощью TRACE:

Приницип работы HTTP метода TRACE

TRACE не передает никакие данные серверу.

 

OPTIONS

OPTIONS используется клиентом, чтобы узнать у севера какие методы и заголовки он поддерживает:

Принцип работы HTTP метода OPTIONS

На основе полученных данных клиент будет соответствующе формировать свой последующий запрос.