HTTP Методы запроса
Что такое HTTP?
Hypertext Transfer Protocol (HTTP) (Протокол передачи гипертекста) - предназначен для обеспечения связи между клиентами и серверами.
HTTP работает как протокол запрос‑ответ между клиентом и сервером.
Веб‑браузер может быть клиентом, а приложение на компьютере, на котором размещён вебсайт, может быть сервером.
Пример: клиент (браузер) отправляет HTTP‑запрос на сервер; затем сервер возвращает ответ клиенту. Ответ содержит информацию о состоянии запроса и может также содержать запрашиваемый контент.
HTTP Методы
- GET
- POST
- PUT
- HEAD
- DELETE
- PATCH
- OPTIONS
- CONNECT
- TRACE
Hypertext Transfer Protocol (HTTP) (Протокол передачи гипертекста) - предназначен для обеспечения связи между клиентами и серверами.
Два наиболее распространённых метода HTTP: GET и POST.
Метод GET
GET — используется для запроса данных от указанного ресурса.
GET — один из наиболее распространённых методов HTTP.
Обратите внимание, что строка запроса (пары имя/значение) отправляется в URL‑адресе запроса GET:
/test/demo_form.html?name1=value1&name2=value2
Некоторые другие замечания о запросах GET:
- GET‑запросы могут быть кешированы
- GET‑запросы остаются в истории браузера
- GET‑запросы могут быть добавлены в закладки
- GET‑запросы никогда не должны использоваться при работе с конфиденциальными данными.
- GET‑запросы имеют ограничения по длине
- GET‑запросы используются только для запроса данных (не изменяются)
Метод POST
POST используется для отправки данных на сервер для создания/обновления ресурса.
Данные, отправленные на сервер с помощью POST, сохраняются в теле HTTP‑запроса:
POST /test/demo_form.html HTTP/1.1
Host: w3schools.com
name1=value1&name2=value2
POST является одним из наиболее распространённых методов HTTP.
Некоторые другие замечания о запросах POST:
- POST‑запросы никогда не кешируются
- POST‑запросы не сохраняются в истории браузера
- POST‑запросы не могут быть добавлены в закладки
- POST‑запросы не имеют ограничений по длине данных
Метод PUT
PUT используется для отправки данных на сервер для создания/обновления ресурса.
Разница между POST и PUT заключается в том, что PUT‑запросы являются идемпотентными. То есть вызов одного и того же PUT‑запроса несколько раз всегда приводит к одному и тому же результату. Напротив, повторный вызов POST‑запроса имеет побочные эффекты от создания одного и того же ресурса несколько раз.
Метод HEAD
HEAD почти идентичен GET, но без тела ответа.
Другими словами, если GET/пользователи возвращает список пользователей, то HEAD/пользователи сделает такой же запрос, но не вернёт список пользователей.
Запросы HEAD полезны для проверки того, что будет возвращено запросом GET, перед тем как фактически выполнить запрос GET, например, перед загрузкой большого файла или тела ответа.
Метод DELETE
Метод DELETE удаляет указанный ресурс.
Метод OPTIONS
Метод OPTIONS описывает параметры связи для целевого ресурса.
Сравнение GET и POST
В следующей таблице сравниваются два метода HTTP: GET и POST.
| GET | POST | |
|---|---|---|
| Кнопка НАЗАД/Перезагрузка | Безопасно | Данные будут повторно отправлены (браузер должен предупредить пользователя о том, что данные должны быть повторно отправлены) |
| Закладки | Может быть в закладках | Не может быть в закладках |
| Кеширование (сохранённая копия) | Может быть кеширование | Не может быть кеширование |
| Тип кодирования | application/x-www-form-urlencoded | application/x-www-form-urlencoded или multipart/form-data. Используйте многокомпонентное кодирование для двоичных данных |
| История | Параметры остаются в истории браузера | Параметры не сохраняются в истории браузера |
| Ограничение на длину данных | Да, при отправке данных метод GET добавляет данные в URL; длина URL‑адреса ограничена (максимальная длина URL‑адреса составляет 2048 символов) | Нет ограничений |
| Ограничение на тип данных | Разрешены только символы ASCII | Нет ограничений. Двоичные данные также разрешены |
| Безопасность | GET менее безопасен по сравнению с POST, потому что отправленные данные являются частью URL Никогда не используйте GET при отправке паролей или другой конфиденциальной информации! |
POST намного безопаснее, чем GET, поскольку параметры не сохраняются в истории браузера или в журналах вебсервера (логах). |
| Видимость | Данные видимы всем в URL | Данные не видимы в URL |
