PUT ve POST – Aralarındaki Fark

PUT ve POST arasındaki Temel Farklılıklar

  • Tek bir kaynağı değiştirmeniz gerektiğinde PUT yöntemi, bir alt kaynak eklemeniz gerektiğinde POST yöntemi çağrılır.
  • POST yöntemi yanıtları önbelleğe alınabilir ancak PUT yöntemi yanıtlarını önbelleğe alamazsınız.
  • UPDATE sorgusunu PUT'ta kullanabilirsiniz, oysa sorgu oluşturmayı POST'ta kullanabilirsiniz.
  • PUT yönteminde istemci hangi URI kaynağının olması gerektiğine karar verir ve POST yönteminde sunucu hangi URI kaynağının olması gerektiğine karar verir.
  • PUT spesifik olarak çalışır, POST ise soyut olarak çalışır.
  • Aynı PUT isteğini birden çok kez gönderirseniz sonuç aynı kalır ancak aynı POST isteğini birden çok kez gönderirseniz farklı sonuçlar alırsınız.
  • PUT yöntemi önemsizdir, oysa POST yöntemi önemsiz değildir.
PUT ve POST
PUT ve POST

PUT Yöntemi Nedir?

PUT yöntemi, sunucudaki mevcut kaynağı güncellemek için kullanılır. Genellikle hedef URL'de mevcut olanı başka bir şeyle değiştirir. Bunu yeni bir kaynak oluşturmak veya mevcut olanın üzerine yazmak için kullanabilirsiniz. PUT, ekteki varlığın sağlanan istenen URI (Tekdüzen Kaynak Tanımlayıcı) altında saklanmasını ister.

POST Yöntemi Nedir?

POST, HTTP tarafından desteklenen bir yöntemdir ve

bir web sunucusunun, istenen mesajın gövdesinde yer alan verileri kabul ettiğini gösterir. POST genellikle World Wide Web tarafından kullanıcı tarafından oluşturulan verileri web sunucusuna göndermek için veya dosya yüklediğinizde kullanılır.

REST API'lerinde PUT ve POST arasındaki farklar

PUT ve POST yöntemi arasındaki önemli fark şudur:

PUT POST
Bu yöntem önemsizdir. Bu yöntem önemsiz değildir.
PUT yöntemi, zaten kaynak koleksiyonunun bir parçası olan tek bir kaynağı değiştirmeniz gerektiğinde çağrılır. Kaynak koleksiyonunun altına bir alt kaynak eklemeniz gerektiğinde POST yöntemi çağrılır.
RFC-2616, PUT yönteminin, sağlanan istek URI'sinde saklanan kapalı bir varlık için bir istek gönderdiğini gösterir. Bu yöntem, sunucunun isteğin içerdiği varlığı kabul etmesini ister.
PUT yöntemi sözdizimi şöyledir: PUT /sorular/{soru-kimliği} POST yönteminin sözdizimi POST /sorulardır
PUT yöntemi yanıtlarını önbelleğe alamazsınız. POST yönteminin yanıtı önbelleğe alınabilir.
PUT /vi/juice/orders/1234, “1234” ile tanımlanan bir kaynağı güncellediğinizi gösterir. POST /vi/juice/orders, yeni bir kaynak oluşturduğunuzu ve kaynağı tanımlamak için bir tanımlayıcı döndürdüğünüzü belirtir.
Aynı isteği birden çok kez gönderirseniz sonuç aynı kalacaktır. Aynı POST isteğini birden fazla kez gönderirseniz farklı sonuçlar alırsınız.
PUT spesifik olarak çalışır. POST soyut olarak çalışır.
PUT'ta UPDATE sorgusunu kullanıyoruz. POST'ta sorgu oluşturmayı kullanıyoruz.
PUT yönteminde istemci hangi URI kaynağının olması gerektiğine karar verir. POST yönteminde sunucu hangi URI kaynağının olması gerektiğine karar verir.

PUT örneği

PUT yönteminin web sunucusu örneği:

HTTP PUT http://www.google.com/users/234

HTTP PUT http://www.google.com/users/234/accounts/567

Talep Alma

PUT /new.html HTTP/1.1
Host: example.com
Content-type: text/html
Content-length: 20

<p>New File</p>

Yanıtları

Hedef kaynak mevcut temsile sahipse ve ekteki temsilin durumuyla değiştirilmişse, sunucunun iki yanıt göndermesi gerekir. İlk yanıt kodu 200 (Tamam), ikinci yanıt kodu ise 204'tür (İçerik Yok).

Hedef kaynağın herhangi bir temsili yoksa sunucunun 201 kodlu (Oluşturuldu) yanıtı göndererek kullanıcıyı bilgilendirmesi gerekir.

 HTTP/1.1 201 Created
Content-Location: /new.html

POST örneği

İşte POST yönteminin bir örneği:

HTTP POST http://www.google.com/users

HTTP POST http://www.google.com/users/234/accounts

Varsayılan application/x-www-form-urlencoded içerik türünü kullanan bir form:

POST /test HTTP/1.1
Host: abc.example
Content-Type: application/x-www-form-urlencoded
Content-Length: 40

field1=value1&field2=value2

PUT istekleriyle bir API'yi test etme

API'yi PUT istekleriyle test etme adımları şunlardır:

PUT İstekleriyle bir API'yi test etme
PUT istekleriyle bir API'yi test etme

) 1 Adım Kaynakları PUT isteğiyle güncelleyin.

) 2 Adım Kaynak için GET yöntemini kullanın. PUT isteği başarılı olursa yeni veriler alacaksınız. İstekte sağlanan veriler geçersizse bu yöntem başarısız olur. Bu nedenle hiçbir şeyi güncellemeyecektir.

Bir API'yi POST istekleriyle test etme

API'yi POST istekleriyle test etme adımları şunlardır:

POST İstekleriyle bir API'yi test etme

Bir API'yi POST istekleriyle test etme

) 1 Adım POST isteğini kullanarak bir kaynak oluşturun ve 200 durum kodu döndürdüğünden emin olun.

) 2 Adım Bu kaynak için bir GET isteği yapın ve verileri doğru formatta kaydedin.

) 3 Adım POST isteklerinin yanlış verilerle başarısız olmasını sağlayan testler eklemelisiniz.

PUT Yönteminin Avantajları

PUT yöntemini kullanmanın artıları/yararları şunlardır:

  • Sağlanan varlığı sağlanan URI altında saklamanıza yardımcı olur
  • Sağlanan varlık zaten mevcutsa güncelleme işlemini gerçekleştirebilir veya bu URI ile oluşturabilirsiniz.
  • Bir kaynağı istediğiniz kadar oluşturabilirsiniz.
  • PUT yöntemiyle kaynak oluşturmak çok kolaydır.
  • Kullanıcının gönder düğmesine birden çok kez tıklayıp tıklamadığını kontrol etmenize gerek yoktur.
  • İsteğe eklenen varlığı tanımlayabilir.

POST Yönteminin Avantajları

POST yöntemini kullanmanın artıları/yararları şunlardır:

  • Bu yöntem kaynak URI'sini belirlemenize yardımcı olur.
  • Konum başlığını kullanarak yeni bir kaynak konumu başlığı belirlemek çok kolaydır.
  • Varlığın, URI tarafından tanımlanan, kaynağın yeni bir alt öğesi olarak kabul edilmesi için bir istek gönderebilirsiniz.
  • Kullanıcı tarafından oluşturulan verileri web sunucusuna gönderebilirsiniz.
  • Herhangi bir kaynağı saklamak için URL'yi bilmediğinizde çok kullanışlıdır.
  • Kaynaklarınızın URL oluşumunu kontrol eden sunucuya ihtiyaç duyduğunuzda POST'u kullanın.
  • POST, istekleri tarayıcı geçmişinde kalmadığından güvenli bir yöntemdir.
  • Posta kullanarak büyük miktarda veriyi zahmetsizce iletebilirsiniz.
  • Verileri gizli tutabilirsiniz.
  • Bu yöntem, ASCII verilerinin yanı sıra ikili verileri göndermek için de kullanılabilir.