Базовая идея
GET запрашивает ресурс; POST отправляет данные на обработку. Это про семантику HTTP, не только про HTML-формы.
Различия
| GET | POST |
|---|
| Данные | в URL (query) | в теле запроса |
| Кэш / закладки | да | обычно нет |
| Идемпотентность | да (по задумке) | нет |
| Чувствительные данные | не для паролей | лучше, + HTTPS |
| Лимит длины | ограничен URL | больше |
<form method="get" action="/search">...</form>
<form method="post" action="/login">...</form>
Итог
Поиск и фильтры — GET; создание/изменение/логин — POST (или другие глаголы в API).