API-fouten: duidelijke acties zonder geheimen

In het kort

Een foutantwoord helpt invoer verbeteren, opnieuw aanmelden, rechten vragen of wachten. Publieke berichten en interne diagnose hebben verschillende details nodig.

Lege beveiligde gang met servers en netwerken Illustratie · fictieve scène
In dit artikel

Status, type en gebeurtenis scheiden

RFC 9457 definieert application/problem+json. Gebruik een stabiel probleemtype en begrijpelijke details; clients horen geen vertaalde tekst te ontleden om te beslissen. Laat een aanwezig status-veld overeenkomen met de echte HTTP-status.

StatusHTTP-betekenisMogelijke behandeling
400Onjuist verzoekCorrigeren vóór een nieuwe poging.
401Geldige aanmeldgegevens ontbrekenGegevens en afgesproken mechanisme controleren.
403Begrepen maar geweigerdRechten beoordelen; herhalen verleent ze niet.
503Dienst tijdelijk niet beschikbaarBegrensd wachten en alleen veilig herhalen.

Foutpaden voorspelbaar maken

  • Documenteer codes, formaten en verwachte behandeling. Test lege antwoorden, niet-JSON van gateways, verbroken verbindingen en timeouts.
  • Valideer invoer en rechten op de server. Behandel verwachte fouten zonder onbekende storingen te verbergen; presenteer zakelijk falen niet als succes.
  • Geef een bruikbare correlatiecode voor ondersteuning. Houd stacktraces, interne queries, wachtwoorden en tokens uit publieke antwoorden.

Alleen zinvol herhalen

5xx staat geen onbeperkte pogingen toe. Combineer contract, toestand, idempotentie en deadline. Meld fouten met een minimale opgeschoonde reproductie; test na herstel het oorspronkelijke geval en verwante toegangsweigeringen.

Primaire bronnen

API-fouten moeten actie sturen zonder informatie te lekken.

HTTP-status geeft een initiële categorie, maar een client heeft mogelijk een stabiel type en nuttige details nodig. RFC 9457 beschrijft een veelvoorkomende probleemstructuur; het rechtvaardigt niet het blootleggen van interne traceringen of gevoelige gegevens.

  • Scheid permanente weigering, corrigeerbare invoer en tijdelijke fout.
  • Documenteer het type, de status en mogelijke clientactie voor elke belangrijke fout.
  • Test of reacties geen geheimen of onnodige volledige payloads bevatten.

Primaire bron: IETF RFC 9457 — Problem Details for HTTP APIs. Verwante methode: lees de praktische gids.

API-herhalingen: het hele tijdbudget tellen

Beperk het aantal oproepen en stel een globale deadline.

Fictief leervoorbeeld: de cijfers beschrijven CIE noch klanten.

Fictief model: vier oproepen tot 250 ms met wachttijden 100, 200 en 400 ms. Jitter, verbinding, wachtrijen en lokale controle ontbreken.

Pogingen totaal
41 + 3
Wachttijden samen (ms)
700100 + 200 + 400
Modelbudget (ms)
17004 × 250 + 700
De reeks uitsplitsen
StapMaximale oproep (ms)Volgende wachttijd (ms)
Poging 1250100
Poging 2250200
Poging 3250400
Poging 42500
Totaal1000700
Modeltijden (ms)
  • Oproeptijd1.000
  • Opgetelde wachttijd700
  • Globale deadline (ms)1.500

Controles vóór een conclusie

  1. 1.000 + 700 = 1.700 ms overschrijdt de deadline van 1.500 ms.
  2. Geef de globale deadline door en voorkom dubbele effecten; timeout bewijst geen externe annulering.

Een herhalingsbudget proberen

n × T + W × (2^(n−1) − 1)

Verwante methode: lees de praktische gids.

API-fouten: typen, statussen en bewijs

De uitgebreide toelichtingen zijn in deze editie beschikbaar in het Engels.

Handle an error without parsing its sentence

An API client may receive a translated title, missing member or unfamiliar extension. Preserve decisions based on the documented type and HTTP status, then connect a safe action to the context.

  • Compare received status and JSON status without silently replacing either.
  • Test absent type, string status instead of a number, and an unknown extension.
  • Separate person-facing text, business code and occurrence reference.

Explore problem types and eight fictional responses →

IETF · M. Nottingham, E. Wilde, S. Dalal · RFC 9457 · July 2023 · obsoletes RFC 7807 · §3.1, §3.2, §4.2, §5