В чем особенности применения POST и GET?

Добрый день! В данный момент я изучаю основы HTML и CSS, по мере чтения книги возникает масса вопросов. Один из таких вопросов появился в разделе "HTML-формы" и вот, решила спросить у профессионалов - объясните, пожалуйста, новичку, когда стоит использовать POST, а когда GET? В чем из разница?
P.S. Так как я совсем новичок, то желательно объяснить на примерах и доступным языком.
  • Вопрос задан
  • 2892 просмотра
Решения вопроса 2
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Коллеги, автор спрашивал не о том.
А о случаях - когда форму нужно сабмитить через POST, а когда через GET.

Спрашивали - отвечаем.
Надо понимать что GET отправка формы это по сути просто открытие страницы с URL в котором указаны GET параметры. POST же передается в теле запроса и рядовому пользователю не виден.

Соответственно случаи когда форму нужно отправлять через POST
1. Если у вас есть поле input type=file
2. Если у вас есть большие текстовые поля
3. Если вы не хотите что бы пользователь видел параметры которые ушли на сервер

Случаи когда форму лучше отправлять через GET
1. Когда пользователь должен оказаться на странице с url в котором видны параметры отправленной формы
Пример: форма поиска товаров в интернет магазине
2. Если вы не хотите что бы при попытке обновить итоговую страницу выдавался вопрос про форму.
3. ... не смог придумать :)
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
GET - забирает ресурс. Запрос имеет только заголовки, не имеет тела. Ответ имеет заголовки и тело.
POST - создает ресурс. Запрос имеет заголовки и тело. Ответ имеет только заголовки, из которых заголовок Location указывает на адрес созданного ресурса. Это в идеале, конечно можно туда и тело запихать, но это уже отход от спецификации.
PUT - заменяет ресурс. По сути для редактирования.
DELETE - удаляет ресурс.
Еще есть Link, Patch и прочие. Это стоит знать если вы пишите RESTfull апишки как основу основ ну и за подробностями в RFC, да и статей в сети море.

Если у вас есть на сайте функция удаления - ее стоит делать либо через POST либо через DELETE (формы умеют работать только с GET и POST, Delete доступен вам только из JS). Это необходимо для обеспечения безопасности, что бы никто не мог скинуть админу страничку с картинкой, адрес которой - ссылка на удаление чего-либо.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
romanzhak
@romanzhak
Mathematician
Комментировать
Alexufo
@Alexufo
противоречивый, сложный, весь компьютерный.
Комментировать
DjoNIK
@DjoNIK
Вот, кстати, да. Давно у меня нет понимания четкого понимания где какой из методов использовать (благо, что я не по web-у специализируюсь).

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

Но вот для чего может понадобиться в классической форме method="get"? Ведь форма всегда (!) подразумевает именно отправку информации. Тем не менее, такая возможность есть. Или это просто неправильное использование средств, которыми мы выстреливаем себе в ногу?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы