Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi

HTTP metodları nelerdir?​


HTTP metodları, istemcinin sunucudan ne istediğini veya sunucudaki bir kaynağa hangi işlemi uygulamak istediğini belirtir. En sık kullanılan metodlar GET, POST, PUT, PATCH ve DELETE metodlarıdır. HEAD, OPTIONS, CONNECT ve TRACE ise daha özel amaçlarla kullanılır. Metod adı büyük-küçük harfe duyarlıdır ve API tasarımında doğru metod seçimi, isteğin anlamını ve tekrar çalıştırıldığında oluşturacağı sonucu belirler.

Temel HTTP metodları nasıl çalışır?​


GET, bir kaynağı okumak için kullanılır. Örneğin ürün listesini getirmek için GET /products, belirli bir ürünü almak için GET /products/42 gönderilebilir. GET isteği normalde sunucuda kalıcı değişiklik yapmamalıdır.

POST, sunucuya yeni veri göndermek veya sunucuda bir işlem başlatmak için kullanılır. Yeni kullanıcı oluşturma, form gönderme ve sipariş başlatma gibi işlemler buna örnektir. Aynı POST isteği birden fazla kez gönderildiğinde birden fazla kayıt veya işlem oluşabileceği için istemci tarafında tekrar gönderim kontrolü gerekebilir.

PUT, bir kaynağı genellikle bütünüyle oluşturmak veya mevcut kaynağın tamamını yeni içerikle değiştirmek için kullanılır. PATCH ise kaynağa tanımlı bir kısmi değişiklik belgesini uygulamak içindir; kullanılan belge biçimi API sözleşmesinde belirlenmelidir. Bir kullanıcı kaydında sadece e-posta adresini güncellemek PATCH için, kullanıcının tüm temsilini göndermek PUT için daha uygun bir örnektir.

DELETE, belirtilen kaynağı silmek için kullanılır. Silme işlemi kalıcı olmak zorunda değildir; uygulama kaydı arşivleyebilir veya pasif duruma getirebilir. Bu davranış API sözleşmesinde açıkça belirtilmelidir.

HEAD, GET ile aynı başlık bilgilerini almak ancak yanıt gövdesini istememek için kullanılır. Dosyanın varlığını, türünü veya boyutunu kontrol etmekte işe yarar. OPTIONS, bir kaynağın desteklediği metodları ve bazı iletişim seçeneklerini öğrenmek için kullanılır; tarayıcıların CORS ön kontrol isteklerinde de görülebilir.

CONNECT, bir sunucuyla ağ tüneli kurmak için kullanılan özel bir metottur. TRACE ise isteğin sunucular üzerinden nasıl geri yansıtıldığını teşhis etmek için tanımlanmıştır; güvenlik ve yapılandırma gerekçeleriyle uygulamalarda çoğu zaman kullanılmaz veya devre dışı bırakılır.

QUERY de gövdeli sorgular için tanımlanmış güvenli ve idempotent bir metottur; kullanmadan önce istemci ve sunucu desteğini doğrulayın. HTTP’nin IANA kaydı WebDAV gibi alanlara ait başka metotlar da içerir; bu rehber yaygın web/API kararlarına odaklanır.

Metod seçimini kolaylaştıran özet​


Aşağıdaki tablo, yaygın API işlemleri için başlangıç kararını gösterir:

MetodAna amaçTipik örnekGenel özellik
GETVeri okumaÜrünleri listelemeGüvenli ve önbelleğe uygun olabilir
POSTVeri gönderme veya işlem başlatmaYeni sipariş oluşturmaTekrarında yeni sonuç oluşabilir
PUTKaynağı bütünüyle değiştirmeKullanıcı temsilini yenilemeAynı isteğin amaçlanan nihai etkisi tekrarda değişmez
PATCHKısmi güncellemeSadece adres alanını değiştirmeDavranış uygulamanın sözleşmesine bağlıdır
DELETEKaynağı kaldırmaSiparişi silme veya arşivlemeTekrarda amaçlanan kaldırma etkisi aynıdır

Güvenli işlem, sunucuda kalıcı değişiklik amacı taşımayan işlemdir. GET, HEAD, OPTIONS ve TRACE bu gruba girer. İdempotent işlem ise aynı isteğin bir veya daha fazla kez uygulanmasının hedef kaynak üzerindeki nihai etkisinin aynı olmasıdır. Standart gereği güvenli metotlar ile PUT ve DELETE idempotenttir. Bir uygulamanın metot adını yanlış kullanması bu tanımı değiştirmez; servis davranışını sözleşme ve testle doğrulayın. İdempotent olması, isteğin ağ üzerinde yalnızca bir kez gönderileceği anlamına gelmez.

Kurgu bir örnekte PUT /products/42 aynı tam ürün temsiliyle iki kez gönderilsin. Amaçlanan sonuç aynı temsildir; iki ayrı günlük kaydı oluşması idempotentliği bozmaz. DELETE ilk kez başarılı, tekrarında “bulunamadı” dönebilir; kaynak üzerindeki kaldırma etkisi yine aynıdır.

Bir API tasarlarken uygulanacak kararlar​


  1. İşlemin yalnızca veri okuyup okumadığını belirleyin. Okuma işlemiyse GET, dosyanın yalnızca başlıklarını kontrol ediyorsanız HEAD kullanın.
  2. Yeni bir alt kaynak veya sunucu tarafı işlem oluşturuyorsanız POST seçin. Tekrar gönderimin mükerrer kayıt üretmemesi gerekiyorsa uygulama düzeyinde benzersiz istek anahtarı veya benzeri bir kontrol tasarlayın.
  3. Mevcut kaynağın tamamını değiştiriyorsanız PUT, yalnızca belirli alanlarını değiştiriyorsanız PATCH kullanın.
  4. Kaynağı kaldırma veya pasifleştirme işlemini DELETE ile ifade edin ve silmenin fiziksel mi, mantıksal mı olduğunu API dokümantasyonunda açıklayın.
  5. İsteğin dönen HTTP durum kodunu ve yanıt gövdesini kontrol edin. Başarısız bir istekte istemci, yalnızca metoda bakarak işlemin gerçekleştiğini varsaymamalıdır.

Sık yapılan hatalar​


Silme veya veri değiştirme işlemini GET ile yapmak, bağlantıyı tarayan botların ya da önbelleklerin istemeden işlem başlatmasına yol açabilir. Her işlemi POST yapmak da istemin anlamını belirsizleştirir ve istemci, önbellek ile yeniden deneme davranışlarını zorlaştırır. PUT ile kısmi veri gönderilecekse eksik alanların silinip silinmeyeceği açıkça tanımlanmalıdır; aksi halde istemci ile sunucu farklı varsayımlarla çalışabilir. PATCH kullanıldığında da kullanılan güncelleme biçiminin ve alan doğrulamalarının API sözleşmesinde belirtilmesi gerekir.

Sık sorulan sorular​


Güvenli metot demek HTTPS veya yetkilendirme gereksiz demek mi?​


Hayır. Buradaki güvenli, istenen işlemin okuma niteliğini anlatır. Aktarımın şifrelenmesi, kullanıcının kimliği ve hangi kaynağı okuyabildiği ayrı kontrollerdir. GET ile sunulan kişisel veriye de uygun erişim denetimi gerekir.

Desteklenmeyen metotta 405 yanıtı ne anlatır?​


Sunucu metodu tanıyor fakat hedef kaynak o metodu desteklemiyorsa 405 Method Not Allowed kullanılabilir; Allow başlığı desteklenen metotları belirtir. Bu, kullanıcının yetkisiz olduğunu bildiren yanıtla aynı anlamda değildir. API sözleşmesini ve hedef yolu kontrol edin.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic