Fejlhåndtering

Forstå og håndter API-fejl effektivt

Oversigt

Connect2Print API bruger standard HTTP statuskoder og strukturerede fejl-responses til at kommunikere problemer. Denne guide hjælper dig med at forstå og håndtere fejl korrekt.

Fejl Response Format

Alle API-fejl returneres i følgende standardformat:

{
  "success": false,
  "error": {
    "code": "validation_error",
    "message": "Invalid input data",
    "details": {
      "email": ["Email format is invalid"],
      "quantity": ["Must be at least 1"]
    }
  }
}

Response Felter:

HTTP Statuskoder

API'en bruger standard HTTP statuskoder:

2xx - Success

  • 200 OK - Anmodningen lykkedes
  • 201 Created - Ressource blev oprettet
  • 204 No Content - Succesfuld sletning

4xx - Client Fejl

  • 400 Bad Request - Ugyldig anmodning eller valideringsfejl
  • 401 Unauthorized - Manglende eller ugyldig autentificering
  • 403 Forbidden - Utilstrækkelige tilladelser
  • 404 Not Found - Ressource findes ikke
  • 409 Conflict - Konflikt med eksisterende ressource
  • 422 Unprocessable Entity - Valideringsfejl
  • 429 Too Many Requests - Rate limit overskredet

5xx - Server Fejl

  • 500 Internal Server Error - Server fejl
  • 502 Bad Gateway - Gateway fejl
  • 503 Service Unavailable - Service midlertidigt utilgængelig

Fejlkoder Reference

API'en bruger følgende fejlkoder:

Autentificering & Autorisering

  • unauthorized - Ugyldig eller manglende API-nøgle
  • insufficient_permissions - API-nøglen mangler nødvendige scopes
  • expired_token - API-nøglen er udløbet
  • revoked_token - API-nøglen er blevet tilbagekaldt

Validering

  • validation_error - Input data er ugyldig
  • missing_field - Påkrævet felt mangler
  • invalid_format - Felt har forkert format
  • invalid_value - Feltværdi er ugyldig

Ressource Fejl

  • not_found - Ressource ikke fundet
  • duplicate_resource - Ressource findes allerede
  • invalid_state - Operation ikke tilladt i nuværende tilstand
  • resource_locked - Ressource er låst

Rate Limiting

  • rate_limit_exceeded - For mange anmodninger

Server Fejl

  • server_error - Intern serverfejl
  • service_unavailable - Service midlertidigt utilgængelig

Fejl Eksempler

Valideringsfejl (400)

HTTP/1.1 400 Bad Request

{
  "success": false,
  "error": {
    "code": "validation_error",
    "message": "Validation failed",
    "details": {
      "email": ["Email format is invalid"],
      "quantity": ["Must be between 1 and 1000"]
    }
  }
}

Unauthorized (401)

HTTP/1.1 401 Unauthorized

{
  "success": false,
  "error": {
    "code": "unauthorized",
    "message": "Invalid API key"
  }
}

Forbidden (403)

HTTP/1.1 403 Forbidden

{
  "success": false,
  "error": {
    "code": "insufficient_permissions",
    "message": "API key lacks required scope: orders:write"
  }
}

Not Found (404)

HTTP/1.1 404 Not Found

{
  "success": false,
  "error": {
    "code": "not_found",
    "message": "Order not found"
  }
}

Rate Limit (429)

HTTP/1.1 429 Too Many Requests
Retry-After: 60

{
  "success": false,
  "error": {
    "code": "rate_limit_exceeded",
    "message": "Rate limit exceeded. Try again in 60 seconds."
  }
}

Fejlhåndtering Best Practices

Følg disse best practices når du håndterer API-fejl:

Tjek HTTP statuskode først

Brug HTTP statuskoden til at afgøre fejltypen før du parser response body.

Parse fejlkoden

Brug error.code feltet til at bestemme den specifikke fejl og håndter den hensigtsmæssigt.

Vis brugervenlige beskeder

Vis ikke rå API fejlbeskeder til slutbrugere. Oversæt til brugervenlige beskeder.

Log fejldetaljer

Log den fulde fejl response, request detaljer, og context til debugging.

Håndter valideringsfejl

Ved valideringsfejl, vis hvilke felter der er ugyldige og hvorfor.

Implementér retry logik

For 5xx fejl og 429, implementér retry med exponential backoff.

Overvåg fejlrater

Track fejlrater over tid for at identificere problemer tidligt.

Håndter network fejl

Håndter timeout, connection fejl, og andre network issues gracefully.

Kodeeksempler

Eksempler på fejlhåndtering i forskellige sprog:

PHP Fejlhåndtering

try {
    $response = makeApiRequest($url, $apiKey);

    if (!$response['success']) {
        $errorCode = $response['error']['code'];
        $errorMessage = $response['error']['message'];

        switch ($errorCode) {
            case 'unauthorized':
                handleUnauthorized();
                break;
            case 'validation_error':
                handleValidationError($response['error']['details']);
                break;
            case 'rate_limit_exceeded':
                handleRateLimit();
                break;
            default:
                handleGenericError($errorMessage);
        }
    }
} catch (Exception $e) {
    error_log("API request failed: " . $e->getMessage());
}

Node.js Fejlhåndtering

try {
  const response = await makeApiRequest(url, apiKey);

  if (!response.success) {
    const { code, message, details } = response.error;

    switch (code) {
      case 'unauthorized':
        handleUnauthorized();
        break;
      case 'validation_error':
        handleValidationError(details);
        break;
      case 'rate_limit_exceeded':
        await handleRateLimit();
        break;
      default:
        handleGenericError(message);
    }
  }
} catch (error) {
  console.error('API request failed:', error);
}

Python Fejlhåndtering

try:
    response = make_api_request(url, api_key)

    if not response['success']:
        error = response['error']
        code = error['code']
        message = error['message']

        if code == 'unauthorized':
            handle_unauthorized()
        elif code == 'validation_error':
            handle_validation_error(error.get('details'))
        elif code == 'rate_limit_exceeded':
            handle_rate_limit()
        else:
            handle_generic_error(message)

except Exception as e:
    print(f'API request failed: {e}')

Debugging Tips

Tips til at debugge API problemer:

Brug Request ID

Hver response inkluderer en X-Request-Id header. Gem denne ved fejl til support henvendelser.

Tjek API Logs

Gennemse dine API request logs i admin panelet for at se request/response detaljer.

Test i Postman/cURL

Isolér problemet ved at teste samme request i Postman eller cURL.

Verificér Headers

Sørg for at alle påkrævede headers er sat korrekt (Authorization, Content-Type, etc.).

Validér JSON

Sørg for at request body er valid JSON uden syntaksfejl.

Tjek API Status

Hvis du oplever udbredte fejl, tjek API status siden for kendte problemer.

Næste Trin

Udforsk relaterede emner:

Rate Limiting

Lær hvordan du håndterer 429 fejl specifikt

Rate Limiting

Autentificering

Forstå 401 og 403 fejl i dybden

Autentificering

API Reference

Se hvilke fejl hvert endpoint kan returnere

API Reference

Kodeeksempler

Se mere avancerede fejlhåndterings eksempler

Kodeeksempler