HTTP Методы запроса
Два наиболее распространенных метода HTTP: GET и POST.
Что такое HTTP?
Hypertext Transfer Protocol - Протокол передачи гипертекста (HTTP) предназначен для обеспечения связи между клиентами и серверами.
HTTP работает как протокол запроса-ответа между клиентом и сервером.
Веб-браузер может быть клиентом, а приложение на компьютере, на котором размещен веб-сайт, может быть сервером.
Пример: клиент (браузер) отправляет HTTP-запрос на сервер; затем сервер возвращает ответ клиенту. Ответ содержит информацию о состоянии запроса и может также содержать запрошенный контент.
HTTP Методы
- GET
- POST
- PUT
- HEAD
- DELETE
- PATCH
- OPTIONS
Метод 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/users возвращает список пользователей, то HEAD/users сделает такой же запрос, но не вернет список пользователей.
Запросы 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 |