Idempotenzschlüssel-Format prüfen
Die Formatprüfung für Idempotenzschlüssel nimmt die Zeichenkette, die Sie als Idempotency-Key-Header senden wollen, und sagt Ihnen, ob sie den gängigen Formatregeln entspricht, bevor sie Ihre API überhaupt erreicht.
Im Browser ausführen – kostenlos
Sie prüft, dass der Schlüssel nicht leer ist, dass er lang genug ist, um in der Praxis eindeutig zu sein, dass er eine sinnvolle Maximallänge nicht überschreitet und dass jedes Zeichen URL-sicher ist, damit der Schlüssel Header, Logs und Query-Strings ohne Kodierungsüberraschungen übersteht. Sie senden eine Zeichenkette und erhalten ein klares valid-Flag, die gemessene Länge und eine Liste konkreter Probleme, wenn etwas nicht stimmt.
Warum Idempotenzschlüssel eine Formatprüfung brauchen
Idempotenzschlüssel existieren, damit eine wiederholte Anfrage — eine zweimal abgeschickte Zahlung, eine nach einem Timeout erstellte Bestellung — genau einmal verarbeitet wird. Doch die Sicherheit, die sie versprechen, hängt davon ab, dass der Schlüssel selbst wohlgeformt ist. Ein zu kurzer Schlüssel kollidiert mit dem eines anderen Kunden und dedupliziert still zwei verschiedene Vorgänge zu einem. Ein Schlüssel mit Zeichen außerhalb des URL-sicheren Alphabets wird irgendwo zwischen Ihrem Client, einem Proxy, der Log-Pipeline und dem Server verstümmelt, sodass die Wiederholung mit einer anderen Zeichenkette als dem Original ankommt und zweimal abgerechnet wird. Ein leerer Schlüssel wird von den meisten APIs sofort abgelehnt, oft mit einem generischen Fehler, dessen Ursache einen Nachmittag kostet. Wenn Sie den Schlüssel durch diese Formatprüfung für Idempotenzschlüssel am Rand Ihres Systems laufen lassen, werden alle drei Fehlerfälle zur Entwicklungszeit, in einer Testsuite oder in einer Vorabprüfung in Ihrem eigenen Dienst erkannt — statt Wochen später in einem Abgleichsbericht.
Was genau validiert wird
Die Prüfung wendet die Formatregeln an, die Zahlungsdienstleister und Deduplizierungs-Middleware am häufigsten dokumentieren. Erstens muss der Schlüssel eine nicht leere Zeichenkette sein; ein leerer Schlüssel ist ein Fehler, keine Warnung, weil kein Server ihn akzeptieren wird. Zweitens die Länge: Standardmäßig sollte der Schlüssel mindestens 16 Zeichen lang sein — die Untergrenze, unter der Eindeutigkeit nicht mehr plausibel ist — und höchstens 255 Zeichen, die Obergrenze, die die meisten Speicher akzeptieren; beide Grenzen sind pro Aufruf konfigurierbar. Drittens das Alphabet: Jedes Zeichen muss aus dem nicht reservierten Zeichensatz der RFC 3986 stammen — Buchstaben, Ziffern, Bindestrich, Punkt, Unterstrich und Tilde. Diese Zeichen durchlaufen HTTP-Header, URL-Segmente und Log-Versender ohne Kodierung, und genau dort reisen Idempotenzschlüssel. Wenn ein Zeichen durchfällt, listet die Antwort jedes einzelne beanstandete Zeichen auf, damit Sie sehen, ob jemand ein Leerzeichen, einen Schrägstrich oder ein Emoji eingebaut hat, und das issues-Array benennt das Problem maschinenlesbar: too_short, too_long oder unsafe_characters.
Wo die Prüfung in Ihrem Stack sitzt
Die meisten Teams binden sie an zwei Stellen ein. Die erste ist der Client, der die Schlüssel erzeugt: Direkt nachdem Sie einen Schlüssel aus einer UUID, einem Zeitstempel und einer Benutzer-ID gebaut haben, validieren Sie ihn einmal und protokollieren eine Warnung, falls er durchfällt, damit ein Generator-Fehler in Staging statt in Produktion auffällt. Die zweite sind Vertragstests: Schicken Sie einen Stapel Schlüssel aus jeder Integration, die Sie betreuen, in CI an den Endpunkt, damit ein Bibliotheks-Update, das das Kodierungsverhalten ändert, den Build scheitern lässt. Der Endpunkt ist deterministisch und zustandslos — nichts wird gespeichert, keine Liste bereits gesehener Schlüssel wird konsultiert, und dieselbe Eingabe erzeugt immer dieselbe Ausgabe —, sodass er mit echten Schlüsseln sicher aufgerufen werden kann und mit $0.002 pro Anfrage günstig genug ist, um bei jedem Deployment zu laufen. Dieselbe Validierung läuft auf dieser Seite auch kostenlos in Ihrem Browser, sodass ein Entwickler während eines Vorfalls einen verdächtigen Schlüssel einfügen kann und dieselbe Antwort erhält, die die API geben würde.
Anwendungsfälle
Schlüssel in einem Zahlungs-Retry-Client validieren
Prüfen Sie den erzeugten Schlüssel, bevor Sie den Idempotency-Key-Header anhängen, damit ein fehlerhafter Generator schnell scheitert, statt einen Kunden doppelt zu belasten.
Integrationen per Vertragstest in CI prüfen
Schicken Sie die Schlüssel, die jeder Ihrer Dienste erzeugt, bei jedem Build an die Prüfung und lassen Sie die Pipeline scheitern, wenn eine Bibliotheksänderung das Format bricht.
Einen Deduplizierungs-Vorfall debuggen
Fügen Sie einen Schlüssel aus den Logs in die kostenlose Browser-Prüfung ein, um zu sehen, ob Kodierung oder Länge erklären, warum zwei Wiederholungen als unterschiedliche Anfragen behandelt wurden.
Häufige Fragen
Was kostet das?
$0.002 pro Anfrage. Dieselbe Prüfung läuft auf dieser Seite kostenlos in Ihrem Browser.
Wird der Schlüssel gespeichert oder mit bereits gesehenen Schlüsseln verglichen?
Nein. Die Prüfung betrifft nur das Format: Länge und Zeichen. Es wird nichts gespeichert und kein Deduplizierungszustand abgefragt.
Warum ist ein leerer Schlüssel ein Fehler und keine fehlgeschlagene Prüfung?
Weil ein leerer Schlüssel nie eine Formatwahl ist, sondern ein Fehler des Aufrufers. Die API weist ihn als ungültige Eingabe zurück, damit das Problem sofort auffällt.
Welche Zeichen gelten als URL-sicher?
Der nicht reservierte Zeichensatz der RFC 3986: Groß- und Kleinbuchstaben, Ziffern, Bindestrich, Punkt, Unterstrich und Tilde. Alles andere wird in invalid_chars gemeldet.
Kann ich die Längengrenzen ändern?
Ja. Übergeben Sie min_length und max_length, um die Standardwerte 16 und 255 zu überschreiben, etwa für einen Anbieter, der eine Obergrenze von 64 Zeichen dokumentiert.
Garantiert ein gültiges Ergebnis, dass der Schlüssel eindeutig ist?
Nein. Die Prüfung kontrolliert nur das Format. Die Eindeutigkeit entsteht durch die Erzeugung des Schlüssels — eine UUID oder eine vergleichbare Entropiequelle ist die übliche Antwort.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/dev/idempotency-key-format-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"key":"order-7f3a9c2e-2026-07-25"}'const res = await fetch("https://api.kit.forhosting.com/dev/idempotency-key-format-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"key": "order-7f3a9c2e-2026-07-25"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/idempotency-key-format-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"key": "order-7f3a9c2e-2026-07-25"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/idempotency-key-format-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"key":"order-7f3a9c2e-2026-07-25"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"key":"order-7f3a9c2e-2026-07-25"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/idempotency-key-format-check", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"key": "order-7f3a9c2e-2026-07-25"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.idempotency_key_format_check",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |