Когда использовать POST, а когда GET?
Многие новички часто не понимают, какой метод отправки данных использовать: POST или GET. А ведь оба эти методы были придуманы не как альтернатива друг другу, они оба были изобретены для конкретных задач, о которых я сейчас напишу.
Начнём с метода GET. Если воспользоваться английским языком, то GET переводится как "получать". То есть задача данного метода что-то получить от сервера, а никак не изменять данные на нём. Поэтому когда запрос должен получить какие-то данные и вывести их пользователю, то надо использовать метод GET. Самый яркий пример - это форма поиска, она почти всегда отправляет через GET, поскольку поиск извлекает данные и позволяет сохранить ссылку на эту страницу с результатами.
Теперь перейдём к методу POST. Задачей метода POST является модификация каких-либо данных на сервере, например, базы данных или файловой системы сервера, на основе запроса от пользователя. В этом случае надо использовать метод POST.
Так же метод POST надо использовать для скрытия отправляемых данных (например, для форм авторизации). Ещё надо помнить, что POST позволяет отправлять огромные объёмы данных по сравнению с GET. Поэтому если нужно отправить 10-20 тысяч символов, то без POST не обойтись.
Но очень важная рекомендация при использовании POST - делайте редирект хотя бы на ту же страницу, откуда и были отправлены данные. Без этого, если пользователь нажмёт F5 (то есть обновит страницу), то данные отправятся заново, а в большинстве случаев это совсем не нужно.
Резюме: Используйте GET для получения данных (форма поиска, вывод какого-либо контента без каких-либо изменений на сервере). А POST используйте для отправки запроса, изменяющего данные на сервере, также для сокрытия отправляемых данных и для отправки больших объёмов. Только при использовании POST всегда делайте редирект после его обработки.
-
- Михаил Русаков
Комментарии (2):
Хорошая статья!!
Ответить
Спасибо.
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.