Forstå og håndter API-fejl effektivt
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.
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:
success - Altid false for fejlerror - Objekt med fejldetaljererror.code - Maskine-læsbar fejlkodeerror.message - Menneske-læsbar fejlbeskederror.details - (Valgfri) Yderligere fejlinformationAPI'en bruger standard HTTP statuskoder:
200 OK - Anmodningen lykkedes201 Created - Ressource blev oprettet204 No Content - Succesfuld sletning400 Bad Request - Ugyldig anmodning eller valideringsfejl401 Unauthorized - Manglende eller ugyldig autentificering403 Forbidden - Utilstrækkelige tilladelser404 Not Found - Ressource findes ikke409 Conflict - Konflikt med eksisterende ressource422 Unprocessable Entity - Valideringsfejl429 Too Many Requests - Rate limit overskredet500 Internal Server Error - Server fejl502 Bad Gateway - Gateway fejl503 Service Unavailable - Service midlertidigt utilgængeligAPI'en bruger følgende fejlkoder:
unauthorized - Ugyldig eller manglende API-nøgleinsufficient_permissions - API-nøglen mangler nødvendige scopesexpired_token - API-nøglen er udløbetrevoked_token - API-nøglen er blevet tilbagekaldtvalidation_error - Input data er ugyldigmissing_field - Påkrævet felt manglerinvalid_format - Felt har forkert formatinvalid_value - Feltværdi er ugyldignot_found - Ressource ikke fundetduplicate_resource - Ressource findes alleredeinvalid_state - Operation ikke tilladt i nuværende tilstandresource_locked - Ressource er låstrate_limit_exceeded - For mange anmodningerserver_error - Intern serverfejlservice_unavailable - Service midlertidigt utilgængeligHTTP/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"] } } }
HTTP/1.1 401 Unauthorized { "success": false, "error": { "code": "unauthorized", "message": "Invalid API key" } }
HTTP/1.1 403 Forbidden { "success": false, "error": { "code": "insufficient_permissions", "message": "API key lacks required scope: orders:write" } }
HTTP/1.1 404 Not Found { "success": false, "error": { "code": "not_found", "message": "Order not found" } }
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." } }
Følg disse best practices når du håndterer API-fejl:
Brug HTTP statuskoden til at afgøre fejltypen før du parser response body.
Brug error.code feltet til at bestemme den specifikke fejl og håndter den hensigtsmæssigt.
Vis ikke rå API fejlbeskeder til slutbrugere. Oversæt til brugervenlige beskeder.
Log den fulde fejl response, request detaljer, og context til debugging.
Ved valideringsfejl, vis hvilke felter der er ugyldige og hvorfor.
For 5xx fejl og 429, implementér retry med exponential backoff.
Track fejlrater over tid for at identificere problemer tidligt.
Håndter timeout, connection fejl, og andre network issues gracefully.
Eksempler på fejlhåndtering i forskellige sprog:
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()); }
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); }
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}')
Tips til at debugge API problemer:
Hver response inkluderer en X-Request-Id header. Gem denne ved fejl til support henvendelser.
Gennemse dine API request logs i admin panelet for at se request/response detaljer.
Isolér problemet ved at teste samme request i Postman eller cURL.
Sørg for at alle påkrævede headers er sat korrekt (Authorization, Content-Type, etc.).
Sørg for at request body er valid JSON uden syntaksfejl.
Hvis du oplever udbredte fejl, tjek API status siden for kendte problemer.
Udforsk relaterede emner: