Express API'ler ile Yaptığım 5 Production Hatası
API'ler karmaşık kodlar yüzünden bozulmaz.
Sıkıcı detayları görmezden geldiğiniz için bozulurlar.
Bu beş dersi gerçek production hatalarından öğrendim.
- Veriyi erkenden doğrulayın
Eskiden veriyi iş mantığımın (business logic) içinde doğrularım. Bu durum, hatanın kaynağının çok uzağında hatalara yol açıyordu.
Artık hatalı istekleri anında sonlandırıyorum.
Eğer bir istek geçerli bir e-posta içermiyorsa, hemen bir 400 hatası döndürün. Hatalı verinin ana mantığınıza ulaşmasına izin vermeyin.
- Belirli hata kodları kullanın
Genel bir 500 hatası kimseye yardımcı olmaz.
Eğer bir API anahtarı başarısız olursa, 401 hatası döndürün. Eğer kullanıcının kredisi yetersizse, 402 hatası döndürün.
Bir hatayı Slack üzerinden açıklamanız gerekiyorsa, API mesajınız başarısız olmuş demektir.
- Middleware sıralamanızı kontrol edin
Kimlik doğrulama (authentication) sorunlarını ayıklamak için saatler harcadım. Sorun sadece middleware sıralamamdan kaynaklanıyordu.
Şu sırayı takip edin:
- Önce CORS
- İkinci olarak JSON ayrıştırma (parsing)
- Üçüncü olarak Kimlik doğrulama (Authentication)
- En son Rotalar (Routes)
Tek bir yanlış satır her şeyi bozar.
- Doğru verileri loglayın
Birçok loglama stili denedim. Çoğu işe yaramazdı.
Standart takip için; metodu, yolu (path) ve durum kodunu (status code) loglayın.
Hatalar için; istek kimliğini (request ID), hata mesajını ve stack trace'i loglayın.
Gece saat 3'te uyandığınızda, geri kalan her şey sadece gürültüdür.
- Hız sınırları (rate limits) belirleyin
Bir endpoint'e o kadar yoğun saldırı yapıldığını gördüm ki, bu gerçek paraya mal oldu.
Sınırları olmayan bir API, umuda güvenir. Umut, bir güvenlik stratejisi değildir.
Sunucunuzu korumak için express-rate-limit kullanın.
API hatalarının çoğu temel kuralların göz ardı edilmesinden kaynaklanır.
Production sizin planlarınızı umursamaz. Sadece kurulumunuzu (setup) umursar.
Kaynak: https://dev.to/manolito99/5-production-mistakes-that-changed-how-i-build-express-apis-133e