Sobes.tech
Senior

Какво е идемпотентна операция и кои REST методи са идемпотентни?

sobes.tech AI

Отговор от 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
    }
    // Анализирайте тялото на заявката и актуализирайте потребителя
    // Повторното извикване с едни и същи данни няма да промени състоянието
}