A2 · HTTP Request Anatomisi: Bir HTTP request'i, **kargo gönderisine** benzer: bir **eylem etiketi** (method — al/gönder/sil), bir **adres** (URL — kime), **gönderi notları** (he
Bir HTTP request'i, **kargo gönderisine** benzer: bir **eylem etiketi** (method — al/gönder/sil), bir **adres** (URL — kime), **gönderi notları** (header'lar — nasıl paketlensin, kim gönderiyor) ve varsa **kutunun içindeki paket** (body — taşınan veri). Peki adresi zaten yazdıysak, neden ayrıca method'a ihtiyaç var? Çünkü aynı adrese (`/api/v1/bugs`) hem "listeyi getir" (GET) hem "yeni ekle" (POST) diyebilirsin — adres NEREYE, method ise NE YAPILACAĞINI söyler. Java'da bunun karşılığı bir metot çağrısıdır: URL nesnenin adı, method çağırdığın fonksiyon, header'lar `@RequestHeader`, body ise `@RequestBody` parametresidir. QA açısından önemi: bir bug'ın kaynağı çoğu zaman body'de değil, gözden kaçan bir header'dadır — `Content-Type: application/json` göndermezsen sunucu JSON'ı ayrıştıramaz ve body'yi boş sanır; request "gönderildi" ama sunucu "boş kutu aldım" der. Bu, testerların en sık düştüğü sessiz tuzaklardan biridir.
Bir Request'in Dört Parçası
🎬 Bir Request'in Dört Parçası: Kargo Kutusu Açılıyor
Bir POST request'i gönderiyorsun. Sunucuya varan bu tek kutunun içinde aslında dört ayrı parça var — hangisi ne işe yarar?
Method + URL birlikte "NE + NEREYE" der: POST + /api/v1/bugs = "buraya YENİ bir bug oluştur". Aynı URL'e GET deseydin "listeyi getir" olurdu.
Body taşınan asıl veridir — yalnızca POST/PUT/PATCH'te bulunur. GET'te body göndermek çoğu sunucuda görmezden gelinir.
Ders — Dört parça da doğru olmalı: method yanlışsa yanlış iş, URL yanlışsa 404, header eksikse boş body, body bozuksa 400. Tester her parçayı ayrı test eder.
Header Neden Sessiz Bir Bug Kaynağıdır?
`Content-Type: application/json` göndermezsen sunucu gövdeyi düz metin sanır ve JSON olarak ayrıştırmaz.
Sunucu boş body görür…
Ayrıştırılamayan gövde çoğu framework'te `null`/boş olarak gelir — sanki hiç veri göndermemişsin gibi.
Sonuç 400 (zorunlu alan boş) veya sessiz 201 (boş kayıt) olabilir. Belirtiye bakan tester body'yi suçlar, oysa suçlu header'dır.
Geçerli bir POST request'ini oluşturma sırasını diz.