Что такое идемпотентность метода

Ответ

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

Пример с HTTP-методами:

  • GET – идемпотентный (повторные запросы не изменяют состояние сервера)
  • PUT – идемпотентный (обновление ресурса на один и тот же id даёт одинаковый результат)
  • POST – неидемпотентный (каждый вызов создаёт новый ресурс)

Пример кода:

// Идемпотентная функция
function updateUserName(userId, newName) {
  // Всегда устанавливает одно и то же имя для userId
  return db.update({ id: userId, name: newName });
}

// Неидемпотентная функция
function createUser(name) {
  // Каждый вызов создаёт нового пользователя
  return db.insert({ name });
}