Sobes.tech
Back to questions
Senior
3

Что такое идемпотентная операция и какие методы REST являются идемпотентными?

Companies where asked
Lanit PPM

Answer from AI

sobes.tech AI

Идемпотентная операция — это операция, которую можно выполнять несколько раз подряд с одинаковым результатом и без побочных эффектов после первого вызова. То есть, повторный вызов не изменит состояние системы дополнительно.

В контексте REST API идемпотентными считаются следующие методы:

  • GET — получение ресурса не меняет состояние сервера.
  • PUT — обновление ресурса с одинаковыми данными несколько раз подряд приводит к одному и тому же состоянию.
  • DELETE — удаление ресурса несколько раз подряд после первого вызова не изменяет состояние (ресурс уже удалён).
  • HEAD, OPTIONS, TRACE — также считаются идемпотентными, так как не изменяют состояние.

Пример:

// Пример идемпотентного PUT запроса в Go
func updateUser(w http.ResponseWriter, r *http.Request) {
    if r.Method != http.MethodPut {
        http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
        return
    }
    // Парсим тело запроса и обновляем пользователя
    // Повторный вызов с теми же данными не изменит состояние
}