При разработке веб-приложений в подавляющем большинстве случаев приходится работать с различными 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)
Комментарии (0)