Я собираюсь дать краткий ответ на этот вопрос.
GET
используется для чтения информации. Это метод по умолчанию, и все используют его для перехода с одной ссылки на другую. Это касается как браузеров, так и сканеров.
GET
является «безопасным». Это означает, что если вы делаете запрос GET
, вы гарантированно никогда не измените что-либо на сервере. Если запрос GET
может привести к удалению чего-либо на сервере, это может быть очень проблематично, поскольку паук / сканер / поисковая система может предположить, что следующие ссылки безопасны, и автоматически удаляет вещи.
Вот почему у нас есть несколько разных методов. GET
предназначен для того, чтобы вы могли «получать» вещи с сервера. Точно так же PUT
позволяет вам установить что-то новое на сервере, а DELETE
позволяет вам что-то удалить.
POST
Самая большая оригинальная цель - отправка форм. Вы отправляете форму на сервер и просите сервер сделать что-то с этой формой.
Любой клиент (человек / браузер или машина / сканер) знает, что POST
является «небезопасным». Он не будет автоматически выполнять POST
запросов от вашего имени, если он действительно не знает, что это то, что вы (пользователь) хотите. Он также используется для таких вещей, как отправка форм.
Поэтому, когда вы разрабатываете свой веб-сайт, убедитесь, что вы используете GET
только для получения информации с сервера, и используйте POST
, если ваш ajax-запрос вызовет изменение «чего-то» на сервере.
Забавный факт: существует много официальных HTTP-методов. Хотя бы 30. Вы, вероятно, будете использовать только очень немногие из них.
Итак, чтобы ответить на вопрос в названии более точно:
Почему доступно несколько методов HTTP?
Различные методы HTTP имеют разные правила и ограничения. Если все согласятся с этими правилами, мы можем начать делать предположения о том, каково намерение. Поскольку эти гарантии существуют, HTTP-серверы, клиенты и прокси-серверы могут принимать разумные решения, не понимая вашего конкретного приложения.