При разработке веб-приложений в подавляющем большинстве случаев приходится работать с различными HTTP-методами. Каждый из них предназначен для решения своего круга задач, хоть и может быть использован не по назначению разработчиком. Это бывает часто, но желательно придерживаться рекомендаций ниже, причем, не важно разрабатываете ли вы RESTful-приложение или обычный сайт.
Метод указывается в начале HTTP-запроса (стартовой строке).
Основные методы
- GET — запрашивает ресурсы у сервера. Получение данных в любом формате: HTML, TXT, JSON и так далее.
- HEAD — запрашивает ресурсы у сервера также как GET, но ожидает в ответе только заголовки. Используется для проверки возвращаемых сервером заголовков (headers). Не допускается в HTML-формах.
- POST — отправка данных на сервер для создания ресурсов. При разработке сайтов обычно используется и для сохранения и для обновления ресурсов, а также других команд для исполнения на сервере. При разработке RESTFul-приложений рекомендую использовать этот метод только для создания ресурсов.
- PUT — используется для создания и обновления (замены) ресурсов при разработке RESTFul-приложений. Не допускается в HTML-формах.
- PATCH — используется для обновления ресурсов (их частей) при разработке RESTFul-приложений. Не допускается в HTML-формах.
- DELETE — используется для удаления ресурсов при разработке RESTFul-приложений. Не допускается в HTML-формах.
- TRACE — служебный метод, используется для проверки обратной связи до выбранного ресурса. Не допускается в HTML-формах.
- OPTIONS — служебный метод, используется для получения информации о сервере и функционале, например, допустимых методах обращения (GET, POST и так далее), требованиям к данным (имеется ввиду валидация на сервере) и так далее.
- CONNECT — служебный метод, используется для создания туннеля с сервером через HTTPS. Не допускается в HTML-формах.
Под «ресурсом» в списке выше понимается запись в базе данных, файл (любого формата) или любой другой способ хранения информации.
При изучении HTTP-методов вы, скорее всего, встретите понятие идемпотентности. Вкратце, оно означает, что идемпотентный HTTP-метод не меняет состояние сервера. Проще говоря, такие методы можно вызывать множество раз подряд и они ничего не сломают. К ним относятся: GET, HEAD, PUT, DELETE, OPTIONS и TRACE. К неидемпотентным, соответственно, относятся: POST, CONNECT и PATCH.
Три метода из идемпотентных являются безопасными (GET, HEAD, OPTIONS) — они только запрашивают данные, ничего не меняя на сервере.
Полезные ссылки
- HTTP методы (developer.mozilla.org/en-US/docs/Web/HTTP/Methods)
- rfc7231 спецификация для GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE
- rfc5789 спецификация PATCH
- Заметки об HTTP запросах
- http://www.restapitutorial.ru/lessons/idempotency.html
- Обсуждение разницы между PUT и POST (stackoverflow)
- Еще одно обсуждение разницы между PUT и POST (stackoverflow)
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.