Fehlerbehandlung
Behandeln Sie API-Fehler elegant mit detaillierten Fehlercodes und Nachrichten.
Die Kanman API verwendet Standard-HTTP-Statuscodes und gibt detaillierte Fehlerinformationen im JSON-Format zurück. Dieses konsistente Fehlerformat macht es einfach, Fehler programmgesteuert zu behandeln und Benutzern hilfreiche Fehlermeldungen anzuzeigen. Wenn etwas schief geht, erhalten Sie einen maschinenlesbaren Fehlercode, eine menschenlesbare Nachricht und oft zusätzliche Details, die bei der Fehlerbehebung helfen.
Fehlerantwort-Format
Alle Fehler folgen dieser Struktur:
{
"error": {
"code": "error_code",
"message": "Menschenlesbare Fehlerbeschreibung",
"details": {}
}
}
| Feld | Typ | Beschreibung |
|---|---|---|
code |
string | Maschinenlesbarer Fehlercode |
message |
string | Menschenlesbare Beschreibung |
details |
object | Zusätzlicher Kontext (optional) |
HTTP-Statuscodes
Erfolgscodes
| Status | Bedeutung |
|---|---|
| 200 | OK - Anfrage erfolgreich |
| 201 | Created - Ressource erstellt |
Client-Fehlercodes
| Status | Bedeutung |
|---|---|
| 400 | Bad Request - Ungültige Eingabe |
| 401 | Unauthorized - Ungültiger oder fehlender Token |
| 403 | Forbidden - Unzureichende Berechtigungen |
| 404 | Not Found - Ressource existiert nicht |
| 429 | Too Many Requests - Rate-Limit überschritten |
Server-Fehlercodes
| Status | Bedeutung |
|---|---|
| 500 | Internal Server Error - Etwas ist schief gelaufen |
| 503 | Service Unavailable - Temporärer Ausfall |
Häufige Fehlercodes
Authentifizierungsfehler
invalid_token
{
"error": {
"code": "invalid_token",
"message": "Das bereitgestellte API-Token ist ungültig"
}
}
Ursache: Token existiert nicht oder ist fehlerhaft
Lösung: Überprüfen Sie, ob das Token korrekt ist und nicht widerrufen wurde
token_expired
{
"error": {
"code": "token_expired",
"message": "Das API-Token ist abgelaufen",
"details": {
"expired_at": "2024-01-15T00:00:00Z"
}
}
}
Ursache: Token nach Ablaufdatum
Lösung: Erstellen Sie ein neues Token
insufficient_scope
{
"error": {
"code": "insufficient_scope",
"message": "Token hat nicht die erforderliche Berechtigung",
"details": {
"required": "write",
"provided": ["read"]
}
}
}
Ursache: Token hat keine Berechtigung für diese Operation
Lösung: Erstellen Sie ein Token mit der erforderlichen Berechtigung
Ressourcenfehler
board_not_found
{
"error": {
"code": "board_not_found",
"message": "Board nicht gefunden oder Zugriff verweigert",
"details": {
"board_id": "550e8400-e29b-41d4-a716-446655440000"
}
}
}
project_not_found
{
"error": {
"code": "project_not_found",
"message": "Projekt nicht gefunden oder Zugriff verweigert"
}
}
task_not_found
{
"error": {
"code": "task_not_found",
"message": "Aufgabe nicht gefunden oder Zugriff verweigert"
}
}
Validierungsfehler
invalid_request
{
"error": {
"code": "invalid_request",
"message": "Anfrage-Validierung fehlgeschlagen",
"details": {
"fields": {
"label": "Label ist erforderlich",
"status": "Status muss 0, 1 oder 2 sein"
}
}
}
}
invalid_uuid
{
"error": {
"code": "invalid_uuid",
"message": "Ungültiges UUID-Format",
"details": {
"field": "projectId",
"value": "keine-uuid"
}
}
}
Kontingentfehler
quota_exceeded
{
"error": {
"code": "quota_exceeded",
"message": "Monatliches API-Kontingent überschritten",
"details": {
"limit": 12000,
"used": 12000,
"reset": "2024-02-01T00:00:00Z"
}
}
}
resource_limit_exceeded
{
"error": {
"code": "resource_limit_exceeded",
"message": "Aufgabenlimit für Ihren Tarif erreicht",
"details": {
"resource": "tasks",
"limit": 500,
"current": 500
}
}
}
Fehler behandeln
JavaScript-Beispiel
async function apiRequest(url, options = {}) {
const response = await fetch(url, {
...options,
headers: {
'Authorization': `Bearer ${API_TOKEN}`,
'Content-Type': 'application/json',
...options.headers
}
});
const data = await response.json();
if (!response.ok) {
const error = new Error(data.error?.message || 'API-Anfrage fehlgeschlagen');
error.code = data.error?.code;
error.status = response.status;
error.details = data.error?.details;
throw error;
}
return data;
}
// Verwendung
try {
const task = await apiRequest('https://api.kanman.de/v1/tasks/123');
console.log(task);
} catch (error) {
switch (error.code) {
case 'task_not_found':
console.log('Aufgabe existiert nicht');
break;
case 'token_expired':
console.log('Bitte erneuern Sie Ihr API-Token');
break;
case 'quota_exceeded':
console.log(`Kontingent wird zurückgesetzt am ${error.details.reset}`);
break;
default:
console.error('API-Fehler:', error.message);
}
}
Python-Beispiel
import requests
class KanmanAPIError(Exception):
def __init__(self, code, message, status, details=None):
self.code = code
self.message = message
self.status = status
self.details = details or {}
super().__init__(message)
def api_request(method, endpoint, **kwargs):
response = requests.request(
method,
f'https://api.kanman.de/v1{endpoint}',
headers={'Authorization': f'Bearer {API_TOKEN}'},
**kwargs
)
data = response.json()
if not response.ok:
error = data.get('error', {})
raise KanmanAPIError(
code=error.get('code', 'unknown'),
message=error.get('message', 'API-Fehler'),
status=response.status_code,
details=error.get('details')
)
return data
# Verwendung
try:
task = api_request('GET', '/tasks/123')
except KanmanAPIError as e:
if e.code == 'task_not_found':
print('Aufgabe existiert nicht')
elif e.code == 'quota_exceeded':
print(f"Kontingent wird zurückgesetzt am {e.details['reset']}")
else:
print(f'Fehler: {e.message}')
Retry-Strategie
Für transiente Fehler (5xx) implementieren Sie exponentielles Backoff:
async function apiRequestWithRetry(url, options, maxRetries = 3) {
for (let attempt = 0; attempt < maxRetries; attempt++) {
try {
const response = await fetch(url, options);
// Client-Fehler nicht erneut versuchen
if (response.status >= 400 && response.status < 500) {
return response;
}
// Server-Fehler erneut versuchen
if (response.status >= 500) {
throw new Error(`Server-Fehler: ${response.status}`);
}
return response;
} catch (error) {
if (attempt === maxRetries - 1) throw error;
// Exponentielles Backoff: 1s, 2s, 4s
const delay = Math.pow(2, attempt) * 1000;
await new Promise(resolve => setTimeout(resolve, delay));
}
}
}
Verwandte Themen
- Authentifizierung - Token-Fehler
- Rate-Limits - Kontingentfehler
- Aufgaben API - Aufgabenspezifische Fehler
Zuletzt aktualisiert: January 1, 0001
Kanman testen