GET следует использовать для запросов, которые доступны только для чтения или не имеют побочных эффектов для данных (т. Е. Они должны быть идемпотентными , как указано в HTTP документация ).Вы должны иметь возможность отправлять запрос GET столько раз, сколько хотите, чтобы он не влиял на результаты, которые будут возвращены.(Вы, возможно, не всегда получаете один и тот же результат, поскольку, разумеется, за это время что-то еще могло измениться, но запрос GET не должен изменять сами данные).
Таким образом, поиск относится к этой категории, посколькуВы не должны изменять какие-либо данные в своей системе, которые будут влиять на вывод при поиске, вы просто предоставляете данные пользователю на основе некоторого параметра, который они вам дают.
Конечно, некоторые данные, которые вывсегда будет нуждаться в обновлении, например, в статистике (как упомянуто в комментариях), и это нормально для GET, так как это не повлияет на ответ, просто ведется запись всех сделанных запросов и т. д.
POST следует использовать, когда выполняется какое-либо разрушительное действие (под разрушительным, я имею в виду, когда данные изменяются, а не просто удаляются).Так что добавляйте, обновляйте, удаляйте и т. Д.
Вот почему браузер обычно запрашивает вас, если вы хотите повторно отправить запрос POST, но не для GET.Это потому, что POST предназначен для использования при изменении данных.
Кроме того, некоторые браузеры могут предварительно извлекать страницы из ссылок на вашей странице (чтобы попытаться создать иллюзию скорости, когда ссылкав итоге щелкнул).Если действие GET делает что-то разрушительное (например, удаление записи), это может быть непреднамеренно вызвано простым посещением страницы, на которой находится ссылка, например.
Если вы беспокоитесь о том, что ваши URL выглядят "грязно"msgstr "вы можете использовать что-то вроде mod_rewrite , чтобы сделать URL более удобными для человека.Например, "http://yoursite.com/search/cars/red"
может отображаться на "http://yoursite.com/search.php?category=cars&color=red"
.