Teşhis, alıştırmalar ve bitirme
Fetch, AbortController ve body stream
Promise tamamlandı diye iş başarılı değildir.
Kavramı anlayalım
Fetch, 404 veya 500 gibi HTTP yanıtlarında promise’i genellikle reject etmez; response.ok/status kontrolü gerekir. Network veya CORS gibi durumlar farklı hata yoluna düşebilir. 204 gövdesini json() ile okumak parse hatası doğurabilir. Yanıt türünü ve sözleşmesini bil.
Body bir stream’dir; json(), text() gibi tüketimler tek kez kullanılabilir. İkinci okuma için clone veya bilinçli buffering gerekir; büyük body’lerde maliyet yaratır. AbortController istemci beklemesini ve devam eden aktarımı iptal etmeye yardımcı olur, server side commit’i geri alma garantisi değildir.
credentials:include gönderim politikasını değiştirir ama SameSite veya CORS engelini geçersiz kılmaz. mode:no-cors opaque yanıt üretir. Fetch wrapper hata tiplerini, timeout, request ID ve güvenli loglama sözleşmesini birleştirebilir; bütün server response’larını otomatik retry etmemelidir.
Next.js frontend’de doğru API servisleri yazmak için.
Fetch catch bloğunun bütün HTTP hatalarını yakalayacağını sanmak.
Aynı konu. Üç farklı derinlik.
const response = await fetch("/api/projects");
if (!response.ok) throw new Error(`HTTP ${response.status}`);HTTP status açıkça kontrol edilir.
Bu sayfa dış sunuculara istek göndermez. HTTP mesajları temsili, HTTP/1.1 biçiminde okunabilir gösterimlerdir; HTTP/2 ve HTTP/3 wire formatı değildir. example.test ayrılmış öğretim alan adıdır. Komut ve JavaScript örneklerini yalnız kendi test ortamında uygula; gerçek token veya cookie yayımlama.
Önce kendin dene.
Fetch 403 döndüğünde catch zorunlu çalışır mı?
Çözümü ve açıklamasını göster
Check response.ok / response.statusHayır; yanıtı ayrıca kontrol etmelisin.