По спецификации HTTP, GET безопасен и идемпотентен, а POST - нет. Это означает, что запрос GET может повторяться несколько раз, не вызывая побочных эффектов.
Даже если вашему серверу все равно (и это маловероятно), между вашим клиентом и сервером могут существовать промежуточные агенты, и все они ожидают этого. Например, прокси для кэширования данных у вашего интернет-провайдера или других провайдеров для повышения производительности. То же самое относится и к ускорителям, например, плагин предварительной выборки для вашего браузера.
Таким образом, GET-запрос может быть кэширован (на основе определенных параметров), а в случае сбоя он может автоматически повторяться без каких-либо ожиданий вредного воздействия. Итак, действительно ваш сервер должен стремиться выполнить этот контракт.
С другой стороны, POST не является безопасным, не идемпотентным, и каждый агент знает, что не нужно кэшировать результаты запроса POST или повторять запрос POST автоматически. Так, например, транзакция по кредитной карте никогда не будет GET-запросом (вы не хотите, чтобы учетные записи были списаны несколько раз из-за сетевых ошибок и т. Д.).
Это очень простой взгляд на это. Для получения дополнительной информации вы можете рассмотреть книгу "RESTful Web Services" Руби и Ричардсона (пресса О'Рейли).
Для быстрого ознакомления с темой REST рассмотрите этот пост:
http://www.25hoursaday.com/weblog/2008/08/17/ExplainingRESTToDamienKatz.aspx
Самое смешное, что большинство людей обсуждают достоинства PUT v POST. Проблема GET v POST была и всегда была очень хорошо решена. Игнорируйте это на свой страх и риск.