HTTP Metodu (GET, POST…) Nedir?
Kısa tanım
HTTP metodu, bir HTTP isteğinin hedef kaynak üzerinde ne yapmak istediğini belirten komuttur: GET okur, POST veri gönderip bir işlem başlatır, PUT kaynağı tamamen değiştirir, PATCH kısmen günceller, DELETE siler. Metotların anlamı RFC 9110'da tanımlanır; her metodun güvenli (safe), idempotent ve önbelleklenebilir olup olmadığı standartta bellidir. Tarayıcılar, proxy'ler, önbellekler ve arama motoru botları isteği bu özelliklere göre ele alır.
Diğer adları: HTTP Method, HTTP verb, HTTP fiili, İstek metodu, Request method

İsteğin ilk kelimesi
HTTP/1.1'de her istek, metodu, hedefi ve protokol sürümünü içeren bir satırla başlar: DELETE /v1/sepet/kalemler/77 HTTP/1.1. HTTP/2 ve HTTP/3'te aynı bilgi :method sözde başlığıyla taşınır. Metot adları büyük-küçük harfe duyarlıdır ve gelenek olarak büyük harfle yazılır. Adres aynı kalırken metodun değişmesi isteğin anlamını tamamen değiştirir: GET /v1/sepet sepeti gösterir, DELETE /v1/sepet boşaltır. İsteğin bütün yapısı HTTP istek ve yanıt maddesinde anlatılıyor.
Metotların özellik tablosu
RFC 9110 sekiz metot tanımlar; PATCH ise RFC 5789 ile eklenmiştir. Gündelik geliştirmede karşılaşılanlar şunlardır:
| Metot | Ne yapar? | Safe | Idempotent | Yanıtı önbelleklenebilir mi? |
|---|---|---|---|---|
GET | Hedef kaynağın güncel temsilini ister | Evet | Evet | Evet |
HEAD | GET ile aynı başlıkları döndürür, gövde göndermez | Evet | Evet | Evet |
POST | Gönderilen veriyi kaynağın kendi kurallarına göre işletir | Hayır | Hayır | Yalnızca açık tazelik bilgisi ve istek adresiyle aynı Content-Location varsa; pratikte nadiren |
PUT | Hedefteki kaynağı gönderilen temsille oluşturur ya da yerine koyar | Hayır | Evet | Hayır |
PATCH | Kaynağa bir değişiklik kümesi uygular | Hayır | Hayır (garanti edilmez) | Yalnızca POST'taki koşullarla |
DELETE | Hedef kaynağı kaldırır | Hayır | Evet | Hayır |
OPTIONS | Kaynağın desteklediği iletişim seçeneklerini sorar | Evet | Evet | Hayır |
Kalan iki metot daha seyrek görülür: CONNECT bir proxy üzerinden tünel açar, TRACE ise isteği tanılama amacıyla geri yansıtır ve güvenlik nedeniyle sunucularda çoğunlukla kapalıdır. OPTIONS isteklerini sık görmenizin sebebi, tarayıcıların farklı kökene giden bazı isteklerden önce CORS ön kontrolü (preflight) için onu kullanmasıdır.
“Safe” ve “idempotent” tam olarak ne demek?
Safe, istemcinin sunucuda bir değişiklik talep etmediği anlamına gelir. Sunucu bir GET isteğini loglayabilir ya da sayaç artırabilir; önemli olan, istemcinin bu yan etkiden sorumlu tutulmamasıdır. Arama motoru botları ve tarayıcıların önceden yükleme (prefetch) mekanizmaları linkleri bu varsayımla rahatça takip eder.
Idempotent, aynı isteğin bir kez ya da on kez gönderilmesinin sunucuda aynı amaçlanan etkiyi bırakmasıdır. Yanıtlar farklı olabilir: ilk DELETE 204 dönerken ikincisi 404 dönebilir, ama kaynak iki durumda da silinmiştir. Bu özellik, bağlantı koptuğunda isteğin otomatik olarak yeniden gönderilip gönderilemeyeceğini belirler; konu idempotency maddesinde derinlemesine ele alınıyor.
GET ile durum değiştirmenin bedeli
Klasik bir hata, yönetim panelinde silme işlemini <a href="/yorum/sil?id=5"> gibi bir linke bağlamaktır. GET'in güvenli olduğunu varsayan herhangi bir araç, örneğin bir link önizleyicisi ya da bir tarayıcı eklentisi, bu linki ziyaret ettiği anda yorum silinir. Aynı tasarım, kullanıcıyı başka bir sitedeki bir görselle bile istemeden işlem yapmaya zorlayan CSRF saldırılarını da kolaylaştırır. Kural basittir: veri değiştiren her işlem POST, PUT, PATCH veya DELETE ile yapılmalıdır. HTML formlarının yalnızca GET ve POST gönderebildiğini de hatırlatalım; diğer metotlar JavaScript veya sunucu tarafı kodla kullanılır.
PUT ile PATCH arasındaki fark
// Mevcut kayıt: {"ad": "Ayşe", "sehir": "İzmir", "bulten": true}
PUT /v1/kullanicilar/31
{"ad": "Ayşe", "sehir": "Ankara"}
// Sonuç: {"ad": "Ayşe", "sehir": "Ankara"} → "bulten" alanı gitti
PATCH /v1/kullanicilar/31
Content-Type: application/merge-patch+json
{"sehir": "Ankara"}
// Sonuç: {"ad": "Ayşe", "sehir": "Ankara", "bulten": true}PUT kaynağın tamamını tarif eder, gönderilmeyen alanlar kaybolabilir. PATCH yalnızca değişikliği taşır; biçimi JSON Merge Patch (RFC 7396) ya da işlem listesi kullanan JSON Patch (RFC 6902) olabilir. “Listeye bir eleman ekle” gibi bir PATCH işlemi iki kez uygulanırsa iki eleman ekler, bu yüzden PATCH idempotent kabul edilmez.
Sunucu bir kaynakta belirli bir metodu desteklemiyorsa 405 Method Not Allowed ile birlikte desteklenen metotları listeleyen bir Allow başlığı dönmelidir; tanımadığı bir metot için ise 501 Not Implemented uygundur. Diğer yanıt türleri için HTTP durum kodu maddesine bakılabilir. Metotların tam tanımı RFC 9110'un metotlar bölümünde yer alıyor.

