Getting Started

Foutafhandeling

Hoe API-fouten op een nette manier af te handelen

Foutafhandeling

De Blitz Rocket API gebruikt standaard HTTP-statuscodes en retourneert consistente foutresponsstructuren.

HTTP-statuscodes

StatuscodeBetekenis
200OK — Verzoek geslaagd
201Aangemaakt — Resource succesvol aangemaakt
400Ongeldig verzoek — Ongeldige parameters of ontbrekende verplichte velden
401Niet geautoriseerd — Ontbrekende of ongeldige API-sleutel
403Verboden — Onvoldoende rechten (bijv. publieke sleutel op privé-eindpunt)
404Niet gevonden — Resource bestaat niet
429Te veel verzoeken — Limiet overschreden
500Interne serverfout — Fout aan onze kant

Foutresponsformaat

Alle foutresponsen volgen deze structuur:

json
{
  "success": false,
  "error": "Een voor mensen leesbare beschrijving van de fout"
}

Veelvoorkomende fouten

Ontbrekende API-sleutel

json
// Status: 401
{
  "success": false,
  "error": "Ontbrekende of ongeldige API-sleutel"
}

Privésleutel vereist

json
// Status: 403
{
  "success": false,
  "error": "Dit eindpunt vereist een privé API-sleutel"
}

Resource niet gevonden

json
// Status: 404
{
  "success": false,
  "error": "Wedstrijd niet gevonden"
}

Validatiefout

json
// Status: 400
{
  "success": false,
  "error": "E-mail of telefoonnummer is vereist"
}

Fouten afhandelen in code

javascript
async function makeApiRequest(endpoint) {
  const response = await fetch(`https://blitzrocket.com/api/v1${endpoint}`, {
    headers: { "x-api-key": process.env.BLITZROCKET_API_KEY },
  });

  const data = await response.json();

  if (!data.success) {
    switch (response.status) {
      case 401:
        throw new Error("Ongeldige API-sleutel. Controleer je gegevens.");
      case 403:
        throw new Error("Onvoldoende rechten. Gebruik een privé API-sleutel.");
      case 404:
        throw new Error(`Resource niet gevonden: ${data.error}`);
      case 429:
        throw new Error("Limiet overschreden. Probeer het later opnieuw.");
      default:
        throw new Error(`API-fout: ${data.error}`);
    }
  }

  return data.data;
}