MagmaNex LogoMagmaNex
Ana Sayfa/Blog/HTTP Durum Kodları: Tam Referans Rehberi
HTTP Durum Kodları: Tam Referans Rehberi
Network26 Mayıs 2026· 9 dk okuma

HTTP Durum Kodları: Tam Referans Rehberi

Tüm HTTP durum kodlarının açıklamaları, ne zaman kullanılacakları ve gerçek dünya örnekleri. 1xx'ten 5xx'e kadar tam liste.

#http#status codes#api#rest#web geliştirme

HTTP Durum Kodları: Tam Referans Rehberi

HTTP durum kodları, web sunucusunun bir isteğe nasıl yanıt verdiğini söyleyen 3 haneli sayılardır. Birinci rakam kategorisini belirler: 1xx bilgi, 2xx başarı, 3xx yönlendirme, 4xx istemci hatası, 5xx sunucu hatası.

💡 Hızlı referans için: MagmaNex'in HTTP Status Codes aracını kullanabilirsiniz.


1xx — Bilgilendirme

Kod Adı Açıklama
100 Continue Sunucu isteğin başlangıcını aldı, devam et
101 Switching Protocols WebSocket yükseltmesi gibi protokol değişikliği
103 Early Hints Link başlıklarını önceden gönder (preload)

Ne Zaman Görürsünüz?

101 Switching Protocols gerçek zamanlı uygulamalarda WebSocket bağlantısı kurulurken görülür.


2xx — Başarı

200 OK

En sık karşılaşılan kod. İstek başarıyla tamamlandı.

HTTP/1.1 200 OK
Content-Type: application/json

{"user": "Ahmet", "email": "ahmet@example.com"}

201 Created

POST isteği başarılı ve yeni kaynak oluşturuldu.

HTTP/1.1 201 Created
Location: /api/users/42
Content-Type: application/json

{"id": 42, "message": "Kullanıcı oluşturuldu"}

Ne zaman kullanılır: REST API'de yeni kaynak oluşturan POST endpoint'leri.

204 No Content

İşlem başarılı ama gönderilecek içerik yok.

HTTP/1.1 204 No Content

Ne zaman kullanılır: DELETE işlemleri veya güncelleme sonrasında içerik döndürülmeyecekse.

Diğer 2xx Kodları

Kod Adı Açıklama
202 Accepted İstek alındı ama henüz işlenmedi (asenkron işlemler)
206 Partial Content Range isteği — video/ses streaming

3xx — Yönlendirme

301 Moved Permanently

Kaynak kalıcı olarak taşındı. Google bu URL'i günceller.

HTTP/1.1 301 Moved Permanently
Location: https://yeni-url.com/sayfa

Kullanım: HTTP → HTTPS yönlendirme, eski URL'leri yeni yapıya taşıma.

302 Found

Geçici yönlendirme. Google orijinal URL'i hatırlar.

Kullanım: Bakım sayfasına geçici yönlendirme, login redirect.

304 Not Modified

Kaynağın önbellekteki kopyası hâlâ geçerli, tekrar gönderilmesine gerek yok.

HTTP/1.1 304 Not Modified
ETag: "abc123"
Cache-Control: max-age=3600

Kullanım: Tarayıcı önbelleğini optimize etmek için ETag ve Last-Modified başlıklarıyla birlikte.

307 vs 308

Kod Adı Metod Değişimi
307 Temporary Redirect POST → POST (metod korunur)
308 Permanent Redirect POST → POST (kalıcı + metod korunur)

4xx — İstemci Hataları

400 Bad Request

İstek sözdizimi hatalı veya sunucu anlayamadı.

{
  "error": "Bad Request",
  "message": "email alanı geçerli bir e-posta adresi olmalıdır"
}

Sebepleri: Hatalı JSON formatı, eksik zorunlu alanlar, geçersiz parametre değerleri.

401 Unauthorized

Kimlik doğrulama gerekli ama yapılmamış.

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="api"

401 vs 403 farkı:

  • 401: "Kim olduğunu bilmiyorum" — giriş yapman gerekiyor
  • 403: "Kim olduğunu biliyorum, izin yok" — giriş yapmış ama yetkisiz

403 Forbidden

Kimlik doğrulandı ama bu kaynağa erişim yasak.

404 Not Found

Kaynak bulunamadı. En sık karşılaşılan hata kodu.

{
  "error": "Not Found",
  "message": "İstenen kullanıcı bulunamadı",
  "id": 9999
}

İpucu: 404 ile 410 (Gone) arasındaki fark: 410 kaynağın kalıcı olarak silindiğini, 404 ise sadece bulunamadığını belirtir.

405 Method Not Allowed

Bu endpoint için HTTP metodu desteklenmiyor.

HTTP/1.1 405 Method Not Allowed
Allow: GET, POST

409 Conflict

İstek mevcut kaynakla çakışıyor.

Örnek: Zaten kayıtlı e-posta adresiyle tekrar kayıt olmaya çalışmak.

{"error": "Conflict", "message": "Bu e-posta adresi zaten kullanılıyor"}

422 Unprocessable Entity

İstek formatı doğru ama içerik semantik olarak geçersiz.

{
  "error": "Validation Failed",
  "errors": [
    {"field": "age", "message": "18 yaşından küçük kullanıcılar kayıt olamaz"},
    {"field": "username", "message": "Özel karakter kullanılamaz"}
  ]
}

400 vs 422 farkı:

  • 400: JSON geçersiz / sözdizimi hatası
  • 422: JSON geçerli ama içerik kuralları ihlal edilmiş

429 Too Many Requests

Rate limiting devreye girdi.

HTTP/1.1 429 Too Many Requests
Retry-After: 60
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1716700800

Diğer 4xx Kodları

Kod Adı Açıklama
408 Request Timeout İstemci yeterince hızlı göndermedi
410 Gone Kaynak kalıcı olarak silindi
413 Payload Too Large Dosya boyutu limitini aştı
415 Unsupported Media Type Content-Type desteklenmiyor
451 Unavailable For Legal Reasons Yasal nedenlerle engellendi

5xx — Sunucu Hataları

500 Internal Server Error

Sunucuda beklenmedik bir hata oluştu. İstemcinin yapabileceği bir şey yok.

Ne Zaman Görülür: Unhandled exception, veritabanı bağlantı hatası, yapılandırma hatası.

Geliştirici notu: Üretim ortamında 500 hatalarını her zaman loglayın — stack trace detaylarını istemciye GÖNDERMEYİN.

502 Bad Gateway

Ağ geçidi veya proxy geçersiz yanıt aldı.

Ne Zaman Görülür: Nginx upstream bağlantısı koptu, backend çöktü.

503 Service Unavailable

Sunucu geçici olarak hizmet veremiyor — bakım veya aşırı yüklenme.

HTTP/1.1 503 Service Unavailable
Retry-After: 3600

504 Gateway Timeout

Ağ geçidi upstream'den zamanında yanıt alamadı.

502 vs 504 farkı:

  • 502: Upstream yanıtladı ama hatalı yanıt verdi
  • 504: Upstream hiç yanıtlamadı (timeout)

REST API'de Doğru Kod Seçimi

// Kullanıcı oluşturma
router.post('/users', async (req, res) => {
  // Validation hatası → 422
  if (!isValidEmail(req.body.email)) {
    return res.status(422).json({ error: 'Geçersiz e-posta' })
  }
  
  // Tekrar kayıt → 409
  const exists = await User.findOne({ email: req.body.email })
  if (exists) {
    return res.status(409).json({ error: 'E-posta zaten kayıtlı' })
  }
  
  // Başarı → 201
  const user = await User.create(req.body)
  return res.status(201).json(user)
})

// Kullanıcı silme
router.delete('/users/:id', async (req, res) => {
  const deleted = await User.delete(req.params.id)
  
  if (!deleted) {
    return res.status(404).json({ error: 'Kullanıcı bulunamadı' })
  }
  
  // Silme başarılı, içerik yok → 204
  return res.status(204).send()
})

Özet Tablosu

Aralık Kategori Örnek
1xx Bilgilendirme 101 WebSocket
2xx Başarı 200 OK, 201 Created, 204 No Content
3xx Yönlendirme 301 Permanent, 302 Temporary
4xx İstemci Hatası 400, 401, 403, 404, 429
5xx Sunucu Hatası 500, 502, 503, 504

Tüm HTTP durum kodlarını etkileşimli olarak görmek için MagmaNex'in HTTP Status Codes aracına göz atın.


🛠 İlgili Araçlar

📚 İlgili Yazılar

← Tüm Yazılar🛠 Araçları Keşfet