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 OKile hata döndürmek —{"error": "..."}formatında. REST istemcileri için kötü; status code’u kullanın.404ile yetki hatası gizlemek — “bu kaynağın var olup olmadığını sızdırmak istemiyorum”. Bu durumda doğru kod hâlâ403veya401. 404 sadece kaynak yoksa.500her yerde — daha açıklayıcı kodlar var (422, 502, 503, 504). 500 sadece beklenmedik exception için.
Kaynaklar
- RFC 9110 — HTTP semantics.
- MDN HTTP Status Codes.