Verifica formato chiave di idempotenza
Il controllo del formato della chiave di idempotenza prende la stringa che intende inviare come intestazione Idempotency-Key e Le dice se segue le regole di formato più comuni prima ancora di raggiungere la Sua API.
Esegui gratis nel browser
Verifica che la chiave non sia vuota, che sia abbastanza lunga da essere unica in pratica, che resti entro una lunghezza massima ragionevole e che ogni carattere sia sicuro in una URL, così che la chiave attraversi intestazioni, log e query string senza sorprese di codifica. Lei invia una stringa e riceve un indicatore valid chiaro, la lunghezza misurata e un elenco di problemi concreti quando qualcosa non va.
Perché le chiavi di idempotenza hanno bisogno di un controllo di formato
Le chiavi di idempotenza esistono affinché una richiesta ripetuta — un pagamento inviato due volte, un ordine creato dopo un timeout — venga elaborata una sola volta. Ma la sicurezza che promettono dipende dal fatto che la chiave stessa sia ben formata. Una chiave troppo corta collide con quella di un altro cliente e deduplica silenziosamente due operazioni diverse in una sola. Una chiave con caratteri fuori dall'alfabeto sicuro per le URL viene deformata da qualche parte tra il Suo client, un proxy, la pipeline dei log e il server, così che il nuovo tentativo arriva con una stringa diversa dall'originale e viene addebitato due volte. Una chiave vuota viene rifiutata immediatamente dalla maggior parte delle API, spesso con un errore generico che richiede un pomeriggio per essere rintracciato. Far passare la chiave attraverso questo controllo del formato della chiave di idempotenza al bordo del Suo sistema intercetta tutti e tre i modi di fallimento in fase di sviluppo, in una suite di test o in una convalida preliminare all'interno del Suo stesso servizio, invece che in un report di riconciliazione settimane dopo.
Cosa viene convalidato esattamente
Il controllo applica le regole di formato che i gestori di pagamenti e i middleware di deduplicazione documentano più spesso. Primo, la chiave deve essere una stringa non vuota; una chiave vuota è un errore, non un avviso, perché nessun server la accetterà. Secondo, la lunghezza: per impostazione predefinita la chiave deve avere almeno 16 caratteri, la soglia sotto la quale l'unicità smette di essere plausibile, e al massimo 255 caratteri, il limite che la maggior parte degli archivi accetta — entrambi i limiti sono configurabili a ogni chiamata. Terzo, l'alfabeto: ogni carattere deve appartenere all'insieme non riservato della RFC 3986 — lettere, cifre, trattino, punto, trattino basso e tilde. Questi caratteri attraversano le intestazioni HTTP, i segmenti di URL e i trasportatori di log senza codifica, che è esattamente il percorso delle chiavi di idempotenza. Quando un carattere non supera il controllo, la risposta elenca ogni carattere incriminato distinto, così Lei può vedere se qualcuno ha inserito uno spazio, una barra o un emoji, e l'array issues nomina il problema in forma leggibile dalla macchina: too_short, too_long o unsafe_characters.
Dove il controllo si inserisce nel Suo stack
La maggior parte dei team lo integra in due punti. Il primo è il client che genera le chiavi: subito dopo aver costruito una chiave da un UUID, un timestamp e un id utente, la convalidi una volta e registri un avviso se fallisce, così un bug del generatore emerge in staging invece che in produzione. Il secondo è il contract testing: invii un lotto di chiavi da ogni integrazione che gestisce all'endpoint in CI, così un aggiornamento di libreria che cambia il comportamento di codifica fa fallire la build. L'endpoint è deterministico e senza stato — niente viene memorizzato, nessun elenco di chiavi già viste viene consultato e lo stesso input produce sempre lo stesso output —, il che significa che è sicuro chiamarlo con chiavi reali e abbastanza economico, a $0.002 a richiesta, da eseguirlo a ogni deploy. Lo stesso controllo gira gratis anche nel Suo browser su questa pagina, così uno sviluppatore può incollare una chiave sospetta durante un incidente e ottenere la stessa risposta che darebbe l'API.
Casi d'uso
Convalidare le chiavi in un client di retry dei pagamenti
Controlli la chiave generata prima di allegare l'intestazione Idempotency-Key, così un generatore malformato fallisce subito invece di addebitare due volte un cliente.
Testare le integrazioni per contratto in CI
Invii le chiavi generate da ciascuno dei Suoi servizi al controllo a ogni build e faccia fallire la pipeline quando un cambio di libreria rompe il formato.
Diagnosticare un incidente di deduplicazione
Incolli una chiave dai log nel controllo gratuito del browser per vedere se la codifica o la lunghezza spiegano perché due tentativi sono stati trattati come richieste diverse.
Domande frequenti
Quanto costa?
$0.002 a richiesta. Lo stesso controllo gira gratis nel Suo browser su questa pagina.
La chiave viene memorizzata o confrontata con chiavi già viste?
No. Il controllo riguarda solo il formato: lunghezza e caratteri. Niente viene memorizzato e nessuno stato di deduplicazione viene consultato.
Perché una chiave vuota è un errore e non un controllo fallito?
Perché una chiave vuota non è mai una scelta di formato: è un bug di chi chiama. L'API la rifiuta come input non valido affinché il problema emerga subito.
Quali caratteri sono considerati sicuri per le URL?
L'insieme non riservato della RFC 3986: lettere maiuscole e minuscole, cifre, trattino, punto, trattino basso e tilde. Qualsiasi altro carattere viene segnalato in invalid_chars.
Posso modificare i limiti di lunghezza?
Sì. Passi min_length e max_length per sostituire i valori predefiniti di 16 e 255, per esempio per adeguarsi a un fornitore che documenta un limite di 64 caratteri.
Un risultato valido garantisce che la chiave sia unica?
No. Il controllo verifica solo il formato. L'unicità dipende da come genera la chiave: un UUID o una fonte di entropia equivalente è la risposta abituale.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo 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)Esempio di richiesta
{
"key": "order-7f3a9c2e-2026-07-25"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.idempotency_key_format_check",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |