Блог Vaden Pro

Все о самостоятельном создании и продвижении сайтов

GET или POST? — вот в чем вопрос!

Раздел: 

Эта статья расскажет юным разработчикам суть методов HTTP - GET и POST, опишет их основные отличия и поможет сделать правильный выбор при создании нового ресурса.

Как выбрать правильный метод запроса

В последнее время в сложившейся практике разработки сайтов наибольшую популярность получили два типа HTTP запросов: GET и POST. Казалось бы ничего сложного в этих двух понятиях нет, но начинающие и неопытные веб-разработчики очень часто допускают непростительные ошибки при выборе определенного метода. Главным образом это происходит по той причине, что эти 2 разные пути могут привести к одному и тому же результату. Ценой неправильного выбора типа запроса может быть угроза безопасности ресурса или информационная перегрузка сервера.

Итак, чтобы не допускать принятие неправильных решений, следует подробнее разобрать суть обоих методов. Это позволит докопаться до истины и вывести веб-разработчика на верный путь.

Очень действенный метод восприятия информации — это ассоциативное мышление, поэтому предлагаю придумать для каждого понятия ассоциацию и связывать функциональные возможности с этим предметом. Обратимся к названиям методов, а точнее к их переводу на русский язык. К примеру, GET переводится, как получать, другими словами получить запрос. А вот POST можно трактовать, пересылка письма по почте. Для программиста это значит, что такой метод будет связан с передачей информации на сервер. Это тот необходимый минимум, который научит новичка не путаться в этих понятиях. Однако, если простые лендинги с формой отправки данных — это для Вас не предел, тогда подойдем в плотную к этому вопросу.

Безопасные и небезопасные HTTP запросы

Изучив спецификацию HTTP 1.1, можно констатировать тот факт, что классификация разновидностей методов запросов насчитывает два типа: безопасный и небезопасный запрос.

Теперь стоит разъяснить суть каждого из методов. Безопасными называются те запросы, которые не имеют никакого влияния на ресурс, они просто запрашивают и помогают считывать информацию. Примером такого запроса является отображение картинки — через ее адрес идет запрос на сервер в указанную директиву, где должен находится файл с картинкой. Такой тип запроса распространяется на методы HEAD и GET.

На заметку

Безопасный метод — это еще не гарантия отсутствия проблем. Ущерб может нанести зацикливание определенного типа запроса, даже если он и безопасный.

Теперь обратимся к понятию небезопасного запроса. Такой метод предусматривает внесение изменений определенным данным на сайте. Наиболее вероятные проблемы возникают в том случае, когда запрос осуществляется повторно или без надобности. В качестве примера следует отметить такие процессы, как онлайн-регистрация, пересылание сообщения или веб-платежи. Пот такой тип запроса относят POST, PUT и DELETE методы.

Идемпотентные методы

Это сложное для восприятия и произношения понятие означает способность некоторых из методов предоставлять одни и те же данные при многочисленных запросах. Та ситуация, когда информация была обновлена, во внимание не берется. Изъясняясь более понятно, это тот случай, когда при запросе файла по одному и тому же адресу будет выводиться постоянно одна и та же информация (например, картинка). Такая способность присуща GET, PUT, DELETE методам.

Узнав более подробнее про типы и методы запросов, возвращаемся к нашему главному вопросу - GET и POST. Разберем все характерные черты этих понятий, которые описывают принципиальные отличия одного от другого.

GET

  • нужен для получения информации с сервера и не влияет на его содержимое;
  • в теле запроса отсутствуют какие-либо элементы;
  • для обработки на сервере не требует много времени или вспомогательных ресурсов;
  • переменные проходят через адресную строку, что визуально доступно для пользователя, и в результате чего данные не имеют никакой защиты;
  • существует предел объема информации для передачи. Ограничения выставляются главным образом браузерами. К примеру, IE шестой версии не позволяет использовать адрес, объем которого превышает 2 килобайта;
  • используется единая система кодировки данных — система ASCII;
  • вышеуказанная кодировка позволяет копировать свое содержимое или сохранять;
  • запрос доступен для кеширования данных;
  • существуют такие понятия, как условные и частичные запросы, посредством которых уменьшается нагрузка на информационный канал;
  • работает по непрерывной связи HTTP (соответствует режиму keepAlive на сервере).

POST

  • целью использования такого запроса является отправка данных, что может оказывать влияние на содержимое ресурса;
  • тело запроса не является пустым, в нем размещены данные, которые нужно отправлять;
  • проигрывает в скорости энергоемкости обработки запроса методу GET, так как тело запроса несет в себе основную информацию;
  • имеет возможность нести в себе большой объем информации, откуда следует, что не исключается возможность передачи файлов на сервер;
  • такая страница не может быть скопирована или сохранена;
  • имеет способность разрывать соединение HTTP;
  • процедура передачи информации для сервера осуществляется посредством двух пакетов TCP, в одном из которых содержится заголовок, а в другом — тело с информацией.

На этом будем завершать анализ методов. Теперь вы можете убедиться в том, что не совсем POST похож на GET. Поэтому при выборе метода в первую очередь следует проанализировать поставленные цели для ресурса, а затем, исходя из принятых решений, делать выбор. Да, стоит отметить, что по умолчанию работает метод GET.

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

  • запрос попадает под классификацию небезопасного — POST;
  • если нельзя оперировать свойством идемпотентности — POST;
  • не получится избежать передачи большого количества информации — POST;
  • для всех остальных случаев применяем GET в силу его быстродействия, экономичности ресурсов и простоте использования.

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