У методов есть два важных свойства, которые помогают проектировать надёжные API.
Безопасный метод не меняет данные на сервере. GET — безопасен: сколько раз ни запрашивай, состояние сервера не изменится. Поэтому GET можно кешировать и повторять без опаски.
Идемпотентный метод даёт один и тот же результат при повторении. GET, PUT и DELETE идемпотентны: удалить пользователя дважды — он всё равно удалён, результат тот же. А вот POST не идемпотентен: повторный POST создаст вторую запись (поэтому двойная отправка формы может задвоить заказ).
Практические правила: • не используйте GET для изменения данных — это нарушает ожидания и ломает кеширование; • для создания берите POST, для обновления — PUT/PATCH; • помните о неидемпотентности POST: защищайте формы от двойной отправки.
Эти свойства — не формальность: на них опираются браузеры, прокси и кеши, чтобы безопасно повторять и кешировать запросы.