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