Tüm HTTP yöntemleri idempotent mi?
sobes.tech yapay zeka
AI'dan gelen yanıt
Hayır, tüm HTTP yöntemleri idempotent değildir.
İdempotens, aynı parametrelerle aynı isteğin birkaç kez yapılması durumunda, sunucu tarafında sonuç ilk başarılı uygulamadan sonra değişmeyeceği anlamına gelir.
Ana HTTP yöntemleri ve idempotenslikleri:
| Yöntem | İdempotent mi? | Amaç |
|---|---|---|
GET |
Evet | Veri almak |
HEAD |
Evet | Yanıt başlıklarını almak |
PUT |
Evet | Kaynağı oluşturmak veya tamamen değiştirmek |
DELETE |
Evet | Kaynağı silmek |
POST |
Hayır | Veri göndermek, kaynak oluşturmak veya işlem yapmak |
PATCH |
Hayır | Kaynağın kısmi güncellenmesi |
POST ve PATCH idempotent değildir çünkü her yürütme, yeni bir kaynak oluşturabilir veya uygulamaya bağlı olarak kaynağın durumunu değiştirebilir, bu da ilk başarılı uygulamadan sonra benzersiz değildir. Örneğin, bir kullanıcı oluşturmak için birden çok kez POST isteği göndermek genellikle birkaç kullanıcı oluşturur.
İşte bir POST örneği, idempotent olmayan:
{
"username": "testuser"
}
Bu POST isteği, her çağrıldığında yeni bir kullanıcı oluşturabilir.
İşte bir PUT örneği, idempotent:
{
"id": 123,
"status": "completed"
}
Bu PUT isteği, ID'si 123 olan kaynağın durumunu "completed" olarak ayarlar. Tekrar edilmesi, durum zaten "completed" ise değişiklik yapmaz.