Tool

HTTP Status Codes Reference

En sık kullanılan HTTP durum kodları ve anlamları. Aranabilir.

Bu araç tarayıcınızda çalışır. Veriler dışarı çıkmaz.

  • 100 Continue

    İstemci isteğin geri kalanını gönderebilir.

    Tipik: Expect: 100-continue ile büyük gövde upload.

  • 101 Switching Protocols

    Sunucu protokol değişimini kabul etti.

    Tipik: HTTP → WebSocket geçişi.

  • 103 Early Hints

    Ön ipuçları, son yanıttan önce.

    Tipik: CSS/JS için erken preload.

  • 200 OK

    İstek başarılı.

    Tipik: Standart başarılı yanıt.

  • 201 Created

    Yeni kaynak oluşturuldu.

    Tipik: POST sonrası, Location header ile.

  • 202 Accepted

    İstek alındı, henüz tamamlanmadı.

    Tipik: Asenkron iş kuyruğa alma.

  • 204 No Content

    Başarılı, gövde yok.

    Tipik: DELETE veya başarılı PUT.

  • 206 Partial Content

    Sadece istenen byte aralığı döndü.

    Tipik: Video / büyük dosya range request.

  • 301 Moved Permanently

    Kaynak kalıcı olarak taşındı.

    Tipik: Domain veya URL yapısı değişikliği.

  • 302 Found

    Geçici yönlendirme.

    Tipik: Login sonrası geri yönlendirme.

  • 303 See Other

    POST sonrası GET ile başka kaynağa yönlendir.

    Tipik: Form gönderim sonrası.

  • 304 Not Modified

    Önbellek hâlâ taze.

    Tipik: ETag / If-None-Match doğrulamaları.

  • 307 Temporary Redirect

    Geçici yönlendirme, metod korunur.

    Tipik: 302 alternatifi (yöntem-koruyan).

  • 308 Permanent Redirect

    Kalıcı yönlendirme, metod korunur.

    Tipik: 301 alternatifi (yöntem-koruyan).

  • 400 Bad Request

    Sunucu isteği anlayamadı.

    Tipik: Geçersiz JSON, eksik alan.

  • 401 Unauthorized

    Kimlik doğrulanmadı.

    Tipik: Eksik / geçersiz token.

  • 403 Forbidden

    Kimlik var, yetki yok.

    Tipik: Yetkisiz kaynak erişimi.

  • 404 Not Found

    Kaynak yok.

    Tipik: Tipik yanlış URL.

  • 405 Method Not Allowed

    HTTP metodu desteklenmiyor.

    Tipik: POST yerine GET veya tersi.

  • 409 Conflict

    Durumla çakışma.

    Tipik: Eşzamanlı yazım, unique kısıtlaması.

  • 410 Gone

    Kaynak kalıcı olarak silindi.

    Tipik: Eski endpoint deprecation.

  • 415 Unsupported Media Type

    Content-Type desteklenmiyor.

    Tipik: Yanlış MIME, missing Content-Type.

  • 422 Unprocessable Entity

    Sözdizimi doğru ama anlam geçersiz.

    Tipik: Validation hataları (Laravel default).

  • 429 Too Many Requests

    Hız limiti aşıldı.

    Tipik: Rate limiting (Retry-After).

  • 500 Internal Server Error

    Sunucuda beklenmedik hata.

    Tipik: Yakalanmamış istisna.

  • 501 Not Implemented

    Sunucu metodu tanımıyor.

    Tipik: Beta endpoint.

  • 502 Bad Gateway

    Upstream geçersiz yanıt.

    Tipik: Nginx → PHP-FPM bağlantı sorunu.

  • 503 Service Unavailable

    Sunucu geçici olarak müsait değil.

    Tipik: Bakım modu, aşırı yük.

  • 504 Gateway Timeout

    Upstream zaman aşımına uğradı.

    Tipik: Yavaş query, donmuş worker.

Nasıl Çalışır

HTTP durum kodları üç haneli, ilk hane sınıfı belirtir:

  • 1xx — Informational: Sürüyor (nadiren görülür).
  • 2xx — Success: İstek başarılı.
  • 3xx — Redirection: İstemci başka bir kaynağa gitmeli.
  • 4xx — Client Error: İstekte sorun var.
  • 5xx — Server Error: Sunucuda sorun var.

Sık karıştırılanlar

401 vs 403:

  • 401 Unauthorized — “kimliğini doğrulayamadım” (login gerek).
  • 403 Forbidden — “kimliğini biliyorum ama bu kaynağa yetkin yok”.

422 vs 400:

  • 400 Bad Request — syntax yanlış (örn. bozuk JSON).
  • 422 Unprocessable Entity — syntax doğru ama anlam geçersiz (örn. e-posta alanında “abc”). Laravel default validation hatalarını 422 ile döner.

301 vs 308:

  • 301 Moved Permanently — kalıcı yönlendirme. Eski tarayıcılar metodu GET’e düşürebilir.
  • 308 Permanent Redirect — kalıcı yönlendirme, metodu korur. POST’u POST olarak yeniden yönlendirir.

502 vs 503 vs 504:

  • 502 Bad Gateway — upstream geçersiz yanıt verdi (örn. PHP-FPM crash).
  • 503 Service Unavailable — sunucu kasten cevap vermiyor (bakım, rate limit).
  • 504 Gateway Timeout — upstream zaman aşımına uğradı (yavaş worker).

Idempotency

Bir metodun idempotent olması, aynı isteğin defalarca yapılmasının yan etkiyi değiştirmemesi anlamına gelir:

  • GET, PUT, DELETE, HEAD, OPTIONS — idempotent.
  • POST, PATCH — genelde idempotent değil.

Idempotent metodlar 5xx hatasından sonra otomatik retry edilebilir. Idempotent olmayanlar (örn. ödeme alma) retry için Idempotency-Key header’ı gibi mekanizmalar gerektirir.

Yaygın anti-pattern’ler

  • 200 OK ile hata döndürmek{"error": "..."} formatında. REST istemcileri için kötü; status code’u kullanın.
  • 404 ile yetki hatası gizlemek — “bu kaynağın var olup olmadığını sızdırmak istemiyorum”. Bu durumda doğru kod hâlâ 403 veya 401. 404 sadece kaynak yoksa.
  • 500 her yerde — daha açıklayıcı kodlar var (422, 502, 503, 504). 500 sadece beklenmedik exception için.

Kaynaklar