HTTP durum kodları: hangisi ne anlama gelir, ne zaman döndürülmeli?
API yazarken ya da bir hatayı ayıklarken ilk bakılan şey durum kodudur. Doğru kodu döndürmek hem istemci tarafını hem de hata ayıklamayı kolaylaştırır.
Gruplar
- 1xx: Bilgi. Günlük işte nadiren görürsün.
- 2xx: Başarılı.
- 3xx: Yönlendirme.
- 4xx: İstemci hatası (istek yanlış).
- 5xx: Sunucu hatası (istek doğru, sunucu yapamadı).
En sık kullanılanlar
| Kod | Anlamı | Ne zaman |
|---|---|---|
| 200 OK | Başarılı | Normal GET/POST cevabı |
| 201 Created | Kayıt oluşturuldu | POST ile yeni kaynak eklendiğinde |
| 204 No Content | Başarılı, gövde yok | Silme veya boş sonuç |
| 301 / 308 | Kalıcı yönlendirme | Adres değiştiğinde (SEO için önemli) |
| 302 / 307 | Geçici yönlendirme | Giriş sonrası yönlendirme gibi |
| 304 Not Modified | Önbellekteki hâli geçerli | ETag / Last-Modified ile |
| 400 Bad Request | İstek bozuk | Eksik veya hatalı parametre |
| 401 Unauthorized | Kimlik yok | Giriş yapılmamış |
| 403 Forbidden | Yetki yok | Giriş var ama izin yok |
| 404 Not Found | Bulunamadı | Kaynak yok |
| 405 Method Not Allowed | Yöntem desteklenmiyor | GET beklenen yere POST gibi |
| 409 Conflict | Çakışma | Aynı kullanıcı adı zaten var |
| 422 Unprocessable Content | Biçim doğru, içerik geçersiz | Form doğrulama hataları |
| 429 Too Many Requests | Çok fazla istek | Hız sınırı aşıldı |
| 500 Internal Server Error | Beklenmeyen hata | Kodda yakalanmamış istisna |
| 502 Bad Gateway | Arkadaki servis cevap vermedi | Nginx önünde çalışan uygulama çöktüğünde |
| 503 Service Unavailable | Geçici olarak hizmet yok | Bakım veya aşırı yük |
| 504 Gateway Timeout | Arkadaki servis geç kaldı | Uzun süren sorgular |
Sık karıştırılanlar
401 mi 403 mü? Kullanıcı kim olduğunu kanıtlamadıysa 401, kim olduğu belli ama izni yoksa 403.
301 mi 308 mi? İkisi de kalıcıdır. 308, isteğin yöntemini (POST gibi) korur; 301'de tarayıcılar POST'u GET'e çevirebilir. Aynısı 302 ve 307 için geçerli.
Hatada 200 döndürmek: {"hata": "bulunamadı"} gövdesiyle 200 döndürmek istemcileri ve izleme araçlarını yanıltır. Hata varsa uygun 4xx/5xx kodunu kullan.
Hata ayıklarken
Tarayıcıda geliştirici araçlarının Network sekmesinde her isteğin kodunu görebilirsin. Komut satırından:
curl -I https://ornek.com/sayfa
502 veya 504 görüyorsan sorun büyük ihtimalle web sunucusunun arkasındaki uygulamada; önce uygulama loglarına bak.