HTTP protokolünde PUT, POST ve PATCH yöntemleri arasındaki fark nedir?
HTTP protokolünde PUT, POST ve PATCH yöntemleri arasındaki fark nedir?
Yanıtlar:
HTTP Fiillerinde PUT, POST, GET, DELETE ve PATCH arasındaki fark:
En yaygın kullanılan POST fiilleri POST, GET, PUT, DELETE, veritabanındaki CRUD (Oluşturma, Okuma, Güncelleme ve Silme) işlemlerine benzer. Bu HTTP fiillerini büyük harfle belirtiriz . Yani, aşağıda aralarındaki karşılaştırma.
PATCH: Bir kaynağa kısmi bir değişiklik gönderir. Kaynak için yalnızca bir alanı güncellemeniz gerekiyorsa PATCH yöntemini kullanmak isteyebilirsiniz.
Not:
POST, PUT, DELETE içeriği değiştirdiğinden, aşağıdaki url için yapılan Fiddler ile yapılan testler güncellemeleri taklit eder. Aslında silmez veya değiştirmez. Ekleme, güncelleme, silme işlemlerinin olup olmadığını kontrol etmek için durum kodlarını görebiliriz.
URL: http://jsonplaceholder.typicode.com/posts/
1) ALIN:
GET, HTTP istek yönteminin en basit türüdür; bir bağlantıyı her tıkladığınızda veya adres çubuğuna bir URL yazdığınızda tarayıcıların kullandığı tarayıcı. Sunucuya, URL tarafından tanımlanan verileri istemciye iletmesi talimatını verir. Veriler hiçbir zaman bir GET isteği sonucunda sunucu tarafında değiştirilmemelidir. Bu anlamda, bir GET isteği salt okunurdur.
Fiddler veya PostMan ile kontrol: Cevabı kontrol etmek için Fiddler'ı kullanabiliriz. Fiddler'ı açın ve Oluştur sekmesini seçin. Fiili ve url'yi aşağıda gösterildiği gibi belirtin ve yanıtı kontrol etmek için Yürüt'ü tıklayın.
Fiil: GET
url: http://jsonplaceholder.typicode.com/posts/
Yanıt: Yanıtı şu şekilde alırsınız:
"userId": 1, "id": 1, "title": "aut sunt ...", "body": "quia et suscipit ..."
"Mutlu" (ya da hatasız) yolunda GET, XML veya JSON'da bir temsil ve 200 (Tamam) HTTP yanıt kodu döndürür. Bir hata durumunda, çoğunlukla 404 (BULUNAMADI) veya 400 (KÖTÜ TALEBİ) döndürür.
2) POST:
POST fiili çoğunlukla yeni kaynaklar oluşturmak için kullanılır. Özellikle, alt kaynaklar oluşturmak için kullanılır. Yani, başka bir kaynağa (örn. Üst) bağımlı.
Başarılı oluşturma işleminde, HTTP durumu 201'e dönün, yeni oluşturulan kaynağa 201 HTTP durumu ile bağlantı içeren bir Konum başlığı döndürün.
Fiddler veya PostMan ile kontrol: Cevabı kontrol etmek için Fiddler'ı kullanabiliriz. Fiddler'ı açın ve Oluştur sekmesini seçin. Fiili ve url'yi aşağıda gösterildiği gibi belirtin ve yanıtı kontrol etmek için Yürüt'ü tıklayın.
Fiil: POST
url: http://jsonplaceholder.typicode.com/posts/
İstek Gövdesi:
data: {title: 'foo', gövde: 'bar', kullanıcı kimliği: 1000, Kimlik: 1000}
Yanıt: Yanıt kodunu 201 olarak alırsınız.
Eklenen kaydı Id = 1000 ile kontrol etmek istiyorsak, fiili Al ve Kullan olarak değiştirin ve Yürüt'e tıklayın.
Daha önce de belirtildiği gibi, yukarıdaki url yalnızca okumalara (GET) izin verir, güncellenen verileri gerçek olarak okuyamayız.
3) PUT:
PUT en çok güncelleme yetenekleri için kullanılır , bilinen bir kaynak URI'ye PUT-in, orijinal kaynağın yeni güncellenmiş sunumunu içeren istek gövdesi ile birlikte.
Fiddler veya PostMan ile kontrol: Cevabı kontrol etmek için Fiddler'ı kullanabiliriz. Fiddler'ı açın ve Oluştur sekmesini seçin. Fiili ve url'yi aşağıda gösterildiği gibi belirtin ve yanıtı kontrol etmek için Yürüt'ü tıklayın.
Fiil: PUT
url: http://jsonplaceholder.typicode.com/posts/1
İstek Gövdesi:
data: {title: 'foo', gövde: 'bar', kullanıcı kimliği: 1, Kimlik: 1}
Yanıt: Başarılı bir güncellemede bir PUT'dan 200 (veya gövdede herhangi bir içerik döndürmüyorsa 204) döndürür.
4) SİL:
DELETE'in anlaşılması oldukça kolaydır. Bir URI tarafından tanımlanan bir kaynağı silmek için kullanılır .
Başarılı bir silme işleminde, HTTP durumu 200'ü (Tamam) bir yanıt gövdesi, belki de silinen öğenin temsili (genellikle çok fazla bant genişliği gerektirir) veya bir sarılmış yanıt döndürün (aşağıdaki Dönüş Değerleri'ne bakın). Ya bu ya da yanıt gövdesi olmadan HTTP durumunu 204 (NO CONTENT) döndür. Başka bir deyişle, gövdesi olmayan 204 durumu veya JSEND stili yanıt ve HTTP durumu 200 önerilen yanıtlardır.
Fiddler veya PostMan ile kontrol: Cevabı kontrol etmek için Fiddler'ı kullanabiliriz. Fiddler'ı açın ve Oluştur sekmesini seçin. Fiili ve url'yi aşağıda gösterildiği gibi belirtin ve yanıtı kontrol etmek için Yürüt'ü tıklayın.
Fiil: DELETE
url: http://jsonplaceholder.typicode.com/posts/1
Yanıt: Başarılı bir silme işleminde, yanıt gövdesi ile birlikte HTTP durumu 200'ü (Tamam) döndürür.
PUT ve PATCH arasındaki örnek
KOYMAK
Adımı değiştirmek zorunda kalsaydım Güncelleme için PUT isteği gönder:
{"first": "Nazmul", "last": "hasan"} Bu nedenle, burada ilk adı güncellemek için verilerin tüm parametrelerini tekrar göndermemiz gerekiyor.
YAMA:
Düzeltme eki isteği, yalnızca değiştirmemiz gereken verileri, verilerin diğer bölümlerini değiştirmeden veya etkilemeden göndereceğimizi söylüyor. Örn: yalnızca ilk adı güncellememiz gerekirse, yalnızca ilk adı geçiririz.
Daha fazla bilgi için lütfen aşağıdaki bağlantılara bakın:
https://jsonplaceholder.typicode.com/
https://github.com/typicode/jsonplaceholder#how-to
PUT = ENTIRE RESOURCE'u sağlanan yeni temsil ile değiştir
PATCH = kaynak kaynağın bölümlerini sağlanan değerlerle değiştir AND
Aşağıdaki tanım gerçek dünya örneğidir.
Örnek Genel Bakış
Her istemci verisi için, bu istemci verilerini bulmak üzere bir tanımlayıcı depolarız ve bu tanımlayıcıyı referans için o istemciye geri göndeririz.
İLETİ
KOYMAK
YAMA
Not: Put Method'da, bir tanımlayıcı bulunmazsa istisna atmıyoruz. Ancak Patch yönteminde, tanımlayıcı bulunmazsa bir istisna atarız.
Yukarıdaki sorularınız varsa lütfen bize bildirin.
GET / PUT idempotenttir PATCH bazen idempotent olabilir
İdempotent nedir - Sorguyu birkaç kez tetiklersek, sonucunu etkilememesi gerekir.
get
: -basit olsun. Verileri sunucudan alın ve kullanıcıya gösterin
{
id:1
name:parth
email:x@x.com
}
post
: -Veritabanında yeni kaynak yarat. Yeni veri eklediği anlamına gelir. Bu idempotent değil.
put
: -Yeni kaynak oluşturun aksi takdirde mevcut kaynaklara ekleyin. İdempotent çünkü her zaman aynı kaynağı güncelleyecek ve çıktı aynı olacak. ex. - ilk veri
{
id:1
name:parth
email:x@x.com
}
{
id:1
email:ppp@ppp.com
}
patch
Şimdi yama isteği geldi PATCH bazen idempotent olabilir
id:1
name:parth
email:x@x.com
}
yama adı: w
{
id:1
name:w
email:x@x.com
}
HTTP Yöntemi Evet POST no PAY evet PATCH no * SEÇENEKLER evet KAFA evet SİL evet
Kaynaklar: Idempotent - Idempotency nedir?
PUT ve PATCH İstekleri Arasındaki Temel Fark :
Bir kişinin adını ve soyadını tutan bir kaynağımız olduğunu varsayalım.
İlk adı değiştirmek istiyorsak, Güncelleme için bir istek göndeririz
{ "first": "Michael", "last": "Angelo" }
Burada, yalnızca ilk adı değiştirmemize rağmen, PUT isteği ile her iki parametreyi de ilk ve son olarak göndermeliyiz.
Başka bir deyişle, tüm değerleri, tam yükü tekrar göndermek zorunludur.
Ancak bir PATCH isteği gönderdiğimizde yalnızca güncellemek istediğimiz verileri göndeririz. Başka bir deyişle, yalnızca güncellenecek ilk adı gönderiyoruz, soyadını göndermenize gerek yok.
Sırasıyla değiştirme / güncelleme için tam ve kısmi veri gönderme PUT & PATCH wrt arasındaki fark oldukça mantıklı. Ancak, aşağıdaki gibi sadece birkaç nokta
Bu şekilde düşün...
POST - oluştur
PUT - değiştir
PATCH - güncelleme
Oku
SİL - sil
En Basit Açıklama:
POST - YENİ kayıt oluştur
PUT - Kayıt varsa, başka güncelleme yapın, yeni bir kayıt oluşturun
PATCH - güncelleme
Oku
SİL - sil