Creare un comando curl da una richiesta HTTP
Trasformi una richiesta HTTP strutturata in un comando curl pronto da incollare in una shell compatibile con POSIX.
Esegui gratis nel browser
Indichi il metodo, un URL assoluto, le intestazioni e, se serve, un corpo testuale. Il generatore protegge ogni valore dinamico, inclusi spazi, query, segni e apostrofi, affinché la shell non interpreti i dati come sintassi. È utile per diagnosticare API, riprodurre richieste dai log, scrivere documentazione e consegnare a un’altra persona una richiesta esatta senza comporre manualmente le opzioni.
Descriva la richiesta da riprodurre
Inizi dal metodo HTTP e dall’URL completo. L’URL deve essere assoluto: deve includere uno schema come HTTPS e le informazioni necessarie a curl per trovare la destinazione senza il contesto del browser o un indirizzo di base. Aggiunga le intestazioni come righe ordinate di nome e valore quando servono autorizzazione, negoziazione dei contenuti, tracciamento, condizioni o un tipo di contenuto dichiarato. Inserisca il corpo solo se la richiesta lo prevede; una stringa vuota indica intenzionalmente un corpo vuoto, mentre un campo omesso non aggiunge opzioni dati. Il comando usa un’opzione esplicita per il metodo, l’URL protetto, un’opzione per ogni intestazione e dati grezzi se il corpo è presente. L’ordine delle intestazioni resta invariato. Il generatore non invia nulla, non risolve l’host, non esamina credenziali e non modifica il payload.
Comprenda come il quoting protegge i valori
La shell interpreta la riga di comando prima che curl la riceva. Copiare valori senza protezione può quindi cambiarne il significato: una e commerciale può avviare un processo, il dollaro espandere una variabile, gli spazi separare argomenti e le virgolette nel JSON diventare sintassi. Il generatore racchiude ogni argomento dinamico tra apici singoli POSIX. Se un valore contiene un apostrofo, chiude la sezione, inserisce il carattere letterale in un frammento tra virgolette doppie e riapre gli apici. La sequenza sembra insolita, ma conserva i byte esatti in sh, bash, dash e zsh. Ogni intestazione resta un solo argomento con nome, due punti, spazio e valore. Il corpo usa l’opzione per dati grezzi, così una chiocciola iniziale non viene letta come file. L’output è destinato alle shell POSIX; PowerShell e il Prompt dei comandi di Windows seguono regole diverse.
Controlli il risultato prima di usarlo
Il generatore rifiuta un URL assente o relativo perché un frammento come /users/42 è ambiguo fuori dall’applicazione che fornisce l’indirizzo di base. Convalida inoltre il metodo come token HTTP, controlla i nomi delle intestazioni, richiede valori testuali e rifiuta le interruzioni di riga. Questi controlli impediscono che una struttura errata venga nascosta da un quoting corretto, ma non stabiliscono se il server supporti il metodo, se l’URL punti all’ambiente previsto o se una credenziale possa essere divulgata. Rilegga il comando, specialmente in presenza di autorizzazioni, cookie di sessione, dati personali o host di produzione. Preferisca credenziali di prova temporanee e rimuova i segreti prima di condividere il comando. La generazione è deterministica: lo stesso input produce sempre lo stesso testo, adatto a snapshot, documentazione, segnalazioni riproducibili e revisioni in cui ogni piccola modifica deve restare evidente.
Casi d'uso
Riprodurre un errore API
Converta metodo, URL, intestazioni e corpo acquisito in un comando pronto per il debug locale.
Scrivere documentazione accurata
Generi esempi curl coerenti senza proteggere manualmente JSON, parametri di query o intestazioni.
Condividere una richiesta con il team
Fornisca un comando deterministico che conservi la struttura e faciliti la revisione.
Domande frequenti
Quanto costa?
Lo strumento nel browser è gratuito. L’esecuzione via API costa $0.002 per richiesta.
Lo strumento invia la richiesta HTTP?
No. Genera soltanto il testo della riga di comando e non accede alla rete.
Perché l’URL deve essere assoluto?
Un URL relativo dipende da un indirizzo di base non indicato e non rappresenta da solo una richiesta curl completa.
Come vengono gestiti gli apostrofi?
Ogni apostrofo chiude la sezione tra apici singoli, viene inserito letteralmente e poi la sezione riprende.
Posso usare il risultato in PowerShell?
L’output è progettato per shell compatibili POSIX; PowerShell applica regole di analisi e quoting diverse.
I segreti vengono rimossi dalle intestazioni?
No. I valori restano esatti; rimuova le credenziali prima di condividere il comando.
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/dev2/curl-command-build \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"method":"POST","url":"https://api.example.com/v1/widgets?draft=true"}'const res = await fetch("https://api.kit.forhosting.com/dev2/curl-command-build", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"method": "POST",
"url": "https://api.example.com/v1/widgets?draft=true"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev2/curl-command-build",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"method": "POST",
"url": "https://api.example.com/v1/widgets?draft=true"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev2/curl-command-build", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"method":"POST","url":"https://api.example.com/v1/widgets?draft=true"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"method":"POST","url":"https://api.example.com/v1/widgets?draft=true"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev2/curl-command-build", 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
{
"method": "POST",
"url": "https://api.example.com/v1/widgets?draft=true"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev2.curl_command_build",
"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. |