Data Fetcher

by Kuligaposten 2026-07-16

Data fetcher utility class.

Mastering JavaScript

class DataFetcher {
  static async fetch(url, { responseType = "json", ...options } = {}) {
    const response = await fetch(url, options);

    if (!response.ok) {
      throw new Error(`${response.status} ${response.statusText}`);
    }

    const parsers = {
      json: () => response.json(),
      text: () => response.text(),
      blob: () => response.blob(),
      arrayBuffer: () => response.arrayBuffer(),
      formData: () => response.formData(),
    };

    const parser = parsers[responseType];

    if (!parser) {
      throw new Error(`Unsupported response type: ${responseType}`);
    }

    return parser();
  }
}
document.addEventListener("DOMContentLoaded", async () => {
  const data = await DataFetcher.fetch("https://api.example.com");
  // do something with the data
  console.log(data);

  const image = await DataFetcher.fetch("/image.png", {
    responseType: "blob",
  });

  const users = await DataFetcher.fetch("/users", {
    method: "POST",
    responseType: "json",
    headers: {
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ name: "Alice" }),
  });
});
Back to Home