PUT ile PATCH farkı

İki metot da var olan bir kaynağı değiştirir; fark gövdenin ne anlama geldiğindedir. PUT gövdesi yeni durumun tamamıdır: boş bıraktığınız alanlar ilke olarak silinir ya da sıfırlanır. PATCH gövdesi ise değişikliklerin bir tarifidir ve biçimini sunucu belgeler — kısmi bir nesne ya da JSON Patch’teki gibi bir işlem listesi.

Nasıl çalışır

PUT tanımı gereği idempotenttir: aynı tam temsili iki kez göndermek aynı sonucu bırakır. PATCH’in böyle olması garanti değildir, çünkü “bu listeye ekle” ya da “bir artır” gibi bir işlemi iki kez uygulamak bir kez uygulamaktan farklı sonuç verir. Bu yüzden özellikle PATCH istekleri If-Match’ten fayda görür: yeniden gönderilen bir yama iki kez uygulanmak yerine reddedilebilir.

Yaygın yanılgı

PATCH’in yalnızca “değiştirmediğiniz alanlar olmadan PUT” olduğu sanılır. Pek çok API bunu böyle uygular ama metot bunu söylemez — birleştirme tarzı bir PATCH ile bir JSON Patch belgesi ikisi de PATCH’tir ve anlamları çok farklıdır. Pratikte birçok “PUT” uç noktası da değiştirmek yerine birleştirir; eksik bir alanla sizinkinin ne yaptığını test edin.

Burada deneyin

Pizza API’si PATCH /pizza/v1/orders/{id} ile kısmi güncelleme alır, Protocol Lab ise PATCH /protocol/v1/documents/{id} ile RFC 6902 JSON Patch kabul eder; karakter PUT uç noktaları tam değiştirme yapar ve If-Match kontrol eder.

İlgili

Kaynaklar

Diğer terimler

Bu sayfayı İngilizce okuyun

Tüm sözlük maddeleri · Test teknikleri · 39 mock REST API’nin tamamı

Son güncelleme