Какова реальная разница между различными методами HTTP-запроса, кроме семантики? - PullRequest
1 голос
/ 16 января 2020

Я читал много дискуссий по этому поводу, например, тот факт, что PUT идемпотентен, а POST - нет, et c. Однако не зависит ли это в конечном итоге от того, как реализован сервер? Разработчик всегда может создать внутренний сервер таким образом, чтобы запрос PUT не был идемпотентным и создавал несколько записей для нескольких запросов. Разработчик также может создать конечную точку для запроса PUT таким образом, чтобы он действовал как запрос DELETE и удалял запись в базе данных.

Поэтому мой вопрос заключается в том, что мы не учитываем какую-либо сторону сервера код, есть ли реальная разница между методами HTTP? Например, GET и POST имеют реальные различия в том, что вы не можете отправить тело с помощью запроса GET, но вы можете отправить тело с помощью запроса POST. Кроме того, насколько я понимаю, GET-запросы обычно кэшируются по умолчанию в большинстве браузеров.

Являются ли методы HTTP-запросов чем-то большим, чем просто логическая структура (семантика), так что, как разработчики, мы можем «ожидать» определенное поведение на основе на тип HTTP-запроса мы отправляем?

Ответы [ 2 ]

0 голосов
/ 16 января 2020

Вы правы, что большинство различий находятся на уровне семантики c, и если ваши компоненты решат назначить другую семантику, это также будет работать. Если не задействованы компоненты, которые вы не контролируете (библиотеки, прокси-серверы, балансировщики нагрузки и т. Д. c).

Например, некоторые компоненты могут использовать тот факт, что их PUT Идемпотент и, следовательно, может быть повторен, а POST нет.

0 голосов
/ 16 января 2020

Протокол передачи гипертекста (HTTP) предназначен для обеспечения связи между клиентами и серверами.

HTTP работает как протокол запроса-ответа между клиентом и сервером.

Веб-браузер может быть клиентом, а приложение на компьютере, на котором размещен веб-сайт, может быть сервером.

Пример: клиент (браузер) отправляет HTTP-запрос на сервер; затем сервер возвращает ответ клиенту. Ответ содержит информацию о состоянии запроса и может также содержать запрошенное содержимое.

Методы HTTP

GET

POST

PUT

HEAD

DELETE

PATCH

ОПЦИИ

Метод GET

GET используется для запроса данных из указанного ресурса.

GET является одним из наиболее распространенных методов HTTP.

Обратите внимание, что строка запроса (пары имя / значение) отправляется в URL-адресе запроса GET.

POST Метод

POST используется для отправки данных на сервер для создания / обновления ресурса.

Данные, отправленные на сервер с POST, хранятся в теле запроса HTTP.

POST - один из самых распространенных методов HTTP.

Метод PUT

PUT используется для отправки данных на сервер для создания / обновления ресурса.

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

Метод HEAD

HEAD практически идентичен GET, но без тела ответа.

Другими словами, если GET / users возвращает список пользователей, то HEAD / users сделает тот же запрос, но не вернет список пользователей.

HEAD-запросы полезны для проверки того, что такое GET запрос будет возвращен до фактического выполнения запроса GET - как до загрузки большого файла или тела ответа.

Метод DELETE

Метод DELETE удаляет указанный ресурс.

Метод OPTIONS

Метод OPTIONS описывает параметры связи для целевого ресурса.

sr c. w3schools

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...