Почему не используются остальные HTTP-глаголы?

#http #browser #protocols #httpverbs

#http #браузер #протоколы #http-глаголы

Вопрос:

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

Или, может быть, это потому, что некоторые браузеры не распознают другие глаголы? И если это так, почему производители браузеров предпочитают реализовывать половину протокола?

[Обновить]

Я нашел эту статью, в которой дается хорошее краткое описание ситуации: Почему произошел сбой REST.

Комментарии:

1. Веб-службы RESTful используют многие глаголы, как и многие серверные программы. Однако GET и POST достаточны для многих «традиционных» веб-страниц…

2. На самом деле, существует еще более семи глаголов. Смотрите tools.ietf.org/html/draft-ietf-httpbis-method-registrations-05 .

3. Упомянутая вами статья посвящена REST в браузерах — он все еще жив и здоров для B2B / межсерверного использования.

4. @Mikaveli: В дополнение к этому, это старая статья. Службы REST стали намного более популярными в последние годы.

Ответ №1:

Спецификация HTML является большим недостатком, поскольку на самом деле разрешены только GET, POST и HEAD . Хотя они и используются довольно часто, но не так сильно непосредственно в браузерах.

Другие crud-глаголы, такие как PUT и DELETE, чаще всего используются в службах REST и WebDAV.

В будущем вы увидите больше ОПЦИЙ, поскольку они используются спецификацией CORS (междоменный xmlhttprequest).

ТРАССИРОВКА практически везде отключена, поскольку представляет довольно большой риск для безопасности. CONNECT определенно довольно часто используется прокси-серверами.

ПАТЧ совершенно новый. Хотя мне кажется странным, что они решили добавить его в список (но не PROPFIND, MKCOL, ACL, LOCK и так далее), я думаю, что в будущем мы увидим, что он будет чаще появляться в RESTful services.

Дополнение: Исходный браузер использовал как GET, так и PUT (последний для обновления веб-страниц). Более поздние браузеры в значительной степени стали доступны только для чтения, пока формы и запрос POST не появились в спецификациях.

Комментарии:

1. Как спецификация HTML предотвращает PUT / DELETE / HEAD?

2. В контексте HTML нет упоминания о методах, отличных от GET и POST . Это не препятствует использованию других методов, но также не предоставляет средств для выполнения других запросов. Кроме того, совсем недавно стало известно, что объект XMLHttpRequest может выполнять методы, отличные от GET / POST .

3. Я думаю, он имеет в виду обычные методы HTML-формы. w3.org/TR/html401/interact/forms.html#adef-method

4. Таким образом, хотя это и не предотвращает это, браузеры (или html, или javascript) не предоставили средств для выполнения других запросов. метод =»ПОМЕСТИТЬ» или метод = «УДАЛИТЬ» были бы хороши в html-формах.

5. @Evert: извините, я прочитал «HTTP spec». Каким-то образом мне все же удалось написать «HTML» в своем комментарии. Классическое мышление.

Ответ №2:

Большинство из них все еще используются, хотя и не так широко, как GET или POST . Например, веб-службы RESTful используют PUT amp; DELETE, а также GET amp; POST:

Веб-сервис RESTful — Статья в Вики

HEAD очень полезен для серверной отладки HTTP-заголовков, но поскольку он не возвращает тело ответа, от него мало пользы браузеру / обычному посетителю веб-сайта…

Другие глаголы, такие как TRACE, не так распространены из-за потенциальных проблем с безопасностью и т.д. Кратко упоминается в вики-статье:

Методы протокола HTTP — Статья в Вики

Ответ №3:

Десять лет спустя эти другие глаголы очень часто используются в RESTful API, которые поддерживают почти все сегодняшние вездесущие SPA-приложения и многие мобильные приложения.

Тем не менее, интерес к REST как структуре API начинает ослабевать с появлением GraphQL и растущим интересом к функциональным стилям программирования, которые выигрывают от структур API в стиле RPC.