FetchClient med retry og timeout

Liten JavaScript-klient for robuste AJAX-kall.

Når bør du bruke scriptet?

Dette scriptet passer når du vil løse én konkret oppgave raskt, men fortsatt holde kvaliteten høy nok til at koden tåler å bli flyttet inn i produksjonsflyt senere.

Hvorfor er dette nyttig i WEBoracle?

WEBoracle kombinerer innhold, adminverktøy og backendflyt. Små, fokuserte scripts gjør det mulig å bygge funksjoner stegvis uten å blande alt inn i samme fil.

Kode

class FetchClient {
  constructor(baseUrl = '') {
    this.baseUrl = baseUrl;
  }

  async request(path, options = {}, timeout = 8000) {
    const controller = new AbortController();
    const timer = setTimeout(() => controller.abort(), timeout);

    try {
      const response = await fetch(this.baseUrl + path, {
        ...options,
        headers: {
          'X-Requested-With': 'XMLHttpRequest',
          ...(options.headers || {})
        },
        signal: controller.signal
      });

      return response;
    } finally {
      clearTimeout(timer);
    }
  }
}

Tilpasning

  • Bytt ut hardkodede navn og tabeller før produksjon.
  • Legg til logging hvis scriptet kjører i adminnære eller sikkerhetskritiske løp.
  • Pakk logikken inn i en tjeneste eller modul når du ser at den blir gjenbrukt.