HTTP durum kodları, sunucunun her yanıtın başında döndürdüğü ve ne olduğunu özetleyen üç haneli sayılardır. Tarayıcılar, istemciler, proxy'ler ve CDN'ler; cache'leyip cache'lememe, yönlendirme yapma, yeniden deneme veya kullanıcıya hata gösterme kararını bu kodlara bakarak verir.
Her durum kodu, ilk hanesine göre beş sınıftan birine düşer: 1xx bilgilendirme, 2xx başarı, 3xx yönlendirme, 4xx istemci hatası, 5xx sunucu hatası. Sınıfı bildiğinde, spesifik kodu aramadan bile kabaca anlamını kestirebilirsin.
Çoğu uygulama aslında küçük bir çekirdek kümeyi kullanır (200, 201, 204, 301, 302, 304, 400, 401, 403, 404, 409, 422, 429, 500, 502, 503). Her birinin *ne anlama geldiğini* - 401 Unauthorized ile 403 Forbidden ya da 301 Moved Permanently ile 302 Found arasındaki farkı - bilmek seni daha sağlam bir backend veya API geliştiricisi yapar.
Bu referansı kullanırken öğreneceklerin
İlk hane sana her zaman sınıfı söyler: 1xx bilgi, 2xx başarı, 3xx yönlendirme, 4xx istemci hatası, 5xx sunucu hatası.
Durum kodları bir API'nin sunduğu *sözleşmenin parçasıdır* - istemciler bunlara göre dallanmalı, gövdedeki hata mesajını parse etmeye çalışmamalıdır.
4xx, istemcinin bir şeyi yanlış yaptığı anlamına gelir (hatalı girdi, eksik kimlik doğrulama, bulunmayan kaynak). 5xx ise istemci ne yaparsa yapsın sunucunun başarısız olduğunu söyler.
Durum kodu referansını adım adım nasıl kullanırsın
1
Kod veya isimle ara
Bir sayı (404, 429) ya da anahtar kelime (auth, redirect, rate limit) yaz; eşleşen kodlar anlık olarak filtrelenir.
2
Sınıfa göre filtrele
Aradığın net bir kod yoksa ve keşfetmek istiyorsan, sınıf çiplerini (1xx, 2xx, 3xx, 4xx, 5xx) kullanarak listeyi daralt.
3
Sade dilli açıklamayı oku
Her kayıt; kodun ne zaman gönderildiğini, tipik istemci davranışını ve en sık karşılaşılan nedeni içerir.
4
Benzer kodları karşılaştır
Karıştırılan çiftler arasındaki çapraz bağlantıları (401 vs 403, 301 vs 302) kullanarak API'n için doğru olanı seç.
HTTP durum kodu sınıfları
HTTP durum kodlarının beş sınıfı ve bir bakışta ne anlama geldikleri. RFC 9110 tarafından tanımlanır ve IANA HTTP Status Code Registry üzerinde kayıtlıdır.
Geçici yönlendirme. Tarayıcılar her istekte orijinal URL'yi yeniden kontrol eder; yer imleri eski URL'de kalır.
Bir kaynağı gerçekten taşıdıysan (rebrand, URL yeniden yapılanması) 301 kullan. A/B testleri, giriş yönlendirmeleri veya bakım sayfaları gibi kısa ömürlü durumlar için 302 daha uygundur.
Sunucu kim olduğunu biliyor ama bu kaynak için yetkin yok.
Farklı kimlik bilgileri göndermek sorunu çözebilecekse 401 döndür. Hangi kimlik bilgisi gönderilirse gönderilsin işe yaramayacaksa (kaynak bu kullanıcıya zaten yasak) 403 döndür.
Gateway timeout - proxy upstream'e ulaştı ama zamanında yanıt alamadı.
Dördü de sunucu hatası ama hata ayıklayan kişiye çok farklı hikâyeler anlatırlar. 500 senin uygulaman; 502 ve 504 ağ yolunu işaret eder; 503 ise kapasiteye işaret eder.
Yaygın HTTP durum kodu hataları
Gövdede {"error": "..."} ile birlikte 200 OK döndürmek. Durum kodları sözleşmenin parçasıdır - istemciler dallanabilsin diye doğrusunu kullan (400, 404, 500).
İzin hataları için 401 kullanmak. 401 kimlik doğrulama içindir; izin reddi 403 olmalı.
Yeni oluşturulan kaynaklar için Location header'lı 201 yerine 200 döndürmek.
HTTP Durum Kodu SSS
HTTP 404 ne demek?
404 Not Found, sunucunun isteği anladığı ama o URL'deki kaynağın mevcut olmadığı anlamına gelir. Genellikle yol yanlıştır, kaynak silinmiştir veya URL yanlış yazılmıştır.
401 ile 403 arasındaki fark nedir?
401 Unauthorized, kimlik doğrulaman olmadığı anlamına gelir - sunucu kim olduğunu bilmiyor. 403 Forbidden ise kimliğin doğrulanmış ama bu kaynak için yetkin olmadığı anlamına gelir. Farklı kimlik bilgileri göndermek 401'i çözebilir; 403'ü çözmez.
301 ile 302 arasındaki fark nedir?
301 Moved Permanently kalıcı bir yönlendirmedir - tarayıcılar ve arama motorları kayıtlarını günceller. 302 Found ise geçici bir yönlendirmedir - istemciler orijinal URL'yi ziyaret etmeye devam eder. Kalıcı taşımalar için 301, geçici sapmalar için 302 kullan.
HTTP 500 ne demek?
500 Internal Server Error, genel bir sunucu tarafı hatasıdır; genellikle yakalanmamış bir exception yukarı kabardığında fırlatılır. İstemci yanlış bir şey yapmadı - sunucun geçerli bir isteği işleyemedi.
Her zaman spesifik bir durum kodu mu kullanmalıyım?
Evet. Hatalar için genel 200 OK ya da her şey için 500 döndürmek API'leri kullanmayı zorlaştırır. Duruma en iyi uyan en spesifik kodu seç - istemciler, proxy'ler, monitörler ve retry mantığı hep durum koduna göre dallanır.
HTTP 429 ne demek?
429 Too Many Requests, bir istemci rate limit'e takıldığında gönderilir. Yanıt, istemciye ne zaman tekrar deneyebileceğini söyleyen bir Retry-After header'ı içermelidir.