Generatore di codice cURL

Input cURL

Incolla un comando cURL per analizzare automaticamente URL, metodo, header e body della richiesta.

Richiesta analizzata

https://api.example.com/items1 headerBody: 15 caratteriSegui reindirizzamenti (-L)

Codice generato

JavaScript fetch

Incolla il comando curl e ottieni codice di richiesta HTTP eseguibile in 11 linguaggi in pochi secondi.

Raccomandazioni correlate

Casi d'uso

  • Dopo aver fatto clic con il tasto destro su una richiesta nel pannello Network di Chrome DevTools e selezionato «Copy as cURL», incollalo in questo strumento per convertirlo direttamente nel codice del linguaggio usato dal tuo progetto, 10 volte più veloce che scrivere la richiesta a mano
  • Durante il debug di API di terze parti quando la documentazione fornisce esempi curl, convertili rapidamente in codice Python requests/Java OkHttp/C# HttpClient per integrarli nel tuo progetto
  • Durante il debug di interfacce in ambiente di produzione, copia comandi curl da strumenti di cattura (Charles/mitmproxy/Wireshark) e convertili in codice di test unitario per verificare direttamente
  • Durante la scrittura di documentazione API, passa rapidamente tra esempi di più linguaggi, fornendo esempi di codice pronti per l'esecuzione a lettori di stack tecnologici diversi
  • Durante la risoluzione di problemi di richieste in produzione, usa curl per riprodurre il problema e poi convertilo in codice per inviarlo a colleghi o creare un Issue, facilitando la riproduzione diretta da parte di altri
  • Nello sviluppo multilinguaggio (ad esempio, passando da un progetto Python a uno Go), converti rapidamente le richieste curl esistenti in codice di chiamata del client HTTP del nuovo linguaggio, risparmiando tempo nella consultazione della documentazione
  • Negli script Shell converti i comandi curl in PowerShell Invoke-RestMethod per i colleghi delle operazioni Windows, o viceversa
  • Impara il protocollo HTTP: confrontando il codice che implementa la stessa richiesta in linguaggi diversi, comprendi le differenze API delle librerie client HTTP
  • Converti rapidamente curl -X POST -d 'json' in codice con Content-Type corretto e serializzazione JSON, evitando errori di concatenazione di stringhe a mano
  • Quando hai bisogno di chiamare API negli script CI/CD, converti i comandi curl debuggati localmente nel codice del linguaggio di script corrispondente per integrarlo nella pipeline

Come utilizzare

  1. Ottieni il comando curl: nel pannello Network di DevTools del browser fai clic con il tasto destro sulla richiesta → Copy → Copy as cURL (bash); oppure esporta cURL da strumenti di cattura come Postman/Charles/mitmproxy; oppure scrivi il comando curl a mano
  2. Incolla nella casella di input: incolla il comando curl nell'area di input superiore, supporta comandi di una o più righe (con backslash di continuazione), rimuovendo automaticamente i ritorni a capo
  3. Fai clic sui pulsanti di esempio per riferimento: se non hai familiarità con il formato puoi fare clic su «Esempio 1/2/3» per caricare comandi curl predefiniti e vederne l'effetto
  4. Visualizza i risultati dell'analisi: l'area dei risultati mostrerà URL, numero di header, caratteri del body e badge per compressione/reindirizzamento/ignora certificato/autenticazione Basic, mostrando avvisi arancioni in caso di problemi
  5. Regola il metodo se necessario: se il metodo riconosciuto automaticamente non è corretto (ad esempio, curl non ha -X POST ma dovrebbe essere POST), cambia manualmente il metodo HTTP nel menu a discesa
  6. Seleziona il linguaggio target: nell'area del codice target fai clic sul pulsante del linguaggio corrispondente (fetch/Axios/Python requests/Go/PHP/Java/C#/PowerShell/wget, ecc.)
  7. Copia il codice: fai clic sul pulsante «Copia codice», incolla nel tuo progetto/terminale ed esegui

Funzionalità

  • 11 linguaggi/librerie target: copre frontend (JS fetch/Axios), Node.js (node-fetch), Python (requests/httpx), Go (net/http), PHP (cURL), Java (OkHttp), C# (HttpClient), PowerShell (Invoke-RestMethod), riga di comando (wget), tutti gli stack tecnologici principali
  • Analisi intelligente dei comandi curl: riconosce automaticamente URL, metodo HTTP, header, body, supporta apici singoli/doppi, escape con backslash, comandi multilinea (backslash a fine riga)
  • Supporto completo per parametri curl comuni: -X/--request metodo, -H/--header header, -d/--data/-F form/body JSON, -u/--user autenticazione Basic, -A/--user-agent UA, -b/--cookie Cookie, -e/--referer Referer, -L/--location seguire reindirizzamenti, --compressed decompressione automatica, -k/--insecure ignorare verifica certificato, -I/--head richiesta HEAD
  • Riconoscimento intelligente del body JSON: rileva Content-Type application/json e serializza automaticamente con JSON.parse/JSON.stringify/requests(json=)/json=, generando codice che usa oggetti direttamente invece di stringhe, più idiomatico
  • Conversione automatica dell'autenticazione Basic: al rilevamento di -u user:pass genera automaticamente l'header Authorization: Basic <base64>, usando meccanismi di autenticazione nativi in ogni linguaggio (Python auth=, OkHttp credentials, C# credentials, ecc.)
  • Badge indicatori di sicurezza: rileva automaticamente parametri come --compressed/-L/-k/-u, mostrandoli con badge visibili nei risultati dell'analisi
  • Cambio manuale del metodo HTTP: dopo aver analizzato automaticamente il metodo curl, consente di cambiare manualmente il metodo nel menu a discesa (GET/POST/PUT, ecc. 7 tipi), vedendo istantaneamente il codice corrispondente
  • Escape delle stringhe sicuro: durante la generazione del codice per ogni linguaggio usa letterali stringa nativi (apici tripli/backslash in Python, backtick in Go, @"" in C#, apici singoli in PHP, apici doppi escapati in Java), evitando errori di sintassi
  • Avvisi di errore di analisi: quando viene inserito un comando curl non valido (URL mancante, non inizia con curl, POST senza body, ecc.) mostra un avviso arancione indicando il problema specifico
  • 3 esempi con un clic: fornisce 3 esempi tipici: GET+autenticazione Token, POST+JSON, autenticazione Basic+seguire reindirizzamenti, per vedere rapidamente le capacità dello strumento
  • Cancella input con un clic: il pulsante Clear reimposta rapidamente, senza residui quando si incollano nuovi comandi
  • Elaborazione 100% locale: i comandi curl e il contenuto delle richieste vengono analizzati e convertiti completamente nel browser, non vengono inviati a nessun server, token/password sensibili non vengono divulgati
  • Copia codice con un clic: dopo aver generato il codice fai clic sul pulsante Copy per copiare negli appunti, incolla direttamente nel tuo progetto ed esegui
  • Adattamento della modalità non sicura HTTPS: il parametro -k/--insecure genera la configurazione corrispondente per ignorare la verifica del certificato TLS in Node/Go/Python/PHP/C#/PowerShell (wget usa --no-check-certificate, C# mostra avviso ServicePointManager, Node imposta NODE_TLS_REJECT_UNAUTHORIZED)

Domande frequenti

A cosa serve lo strumento di conversione da cURL a codice? Perché non usare direttamente il comando curl?

Chiamare direttamente i comandi curl nel codice (come shell_exec, subprocess.run) richiede l'avvio di sottoprocessi, è insicuro e difficile da gestire errori, ottenere header di risposta, fare conversioni di tipi. Il codice di produzione dovrebbe usare i client HTTP nativi del linguaggio di programmazione (Python requests, Java OkHttp, JS fetch, ecc.). Il valore di curl-to-code è tradurre automaticamente i comandi curl che copi da DevTools/strumenti di cattura nel codice del client HTTP del linguaggio corrispondente, risparmiandoti il lavoro meccanico di consultare la documentazione API, escapizzare gli apici manualmente, elaborare JSON/autenticazione, ecc., copia e incolla per eseguire.

Quali linguaggi/librerie target sono supportati?

Attualmente sono supportati 11 target: JavaScript fetch (nativo del browser), Axios (libreria HTTP universale Node/browser), Node.js node-fetch, Python requests (libreria HTTP più popolare di Python), Python httpx (libreria HTTP di nuova generazione compatibile con HTTP/2 e asincrona), Go net/http (libreria standard di Go), estensione PHP cURL, Java OkHttp (libreria ad alte prestazioni universale Android/backend), C# HttpClient (client HTTP standard di .NET), PowerShell Invoke-RestMethod (comune negli script di automazione Windows), wget (strumento di download da riga di comando). Se il linguaggio di cui hai bisogno non è nell'elenco (come Ruby, Rust reqwest, Dart http, Swift URLSession, ecc.), puoi inviare feedback nella pagina, lo aggiungeremo in base alla domanda.

Come copio il comando curl da Chrome DevTools?

Passaggi: 1. Apri Chrome/Edge, premi F12 per aprire DevTools; 2. Passa al pannello Network; 3. Aggiorna la pagina o attiva la richiesta target; 4. Trova la richiesta target nell'elenco delle richieste (puoi filtrare per XHR/JS); 5. Fai clic con il tasto destro sulla richiesta → Copy → seleziona «Copy as cURL (bash)» (versione bash consigliata, migliore compatibilità); 6. Incolla nella casella di input di questo strumento. Fai attenzione a non selezionare Copy as fetch (è codice JS non curl). Firefox/Safari funzionano in modo simile, tutti hanno l'opzione Copy as cURL.

La gestione degli apici nei comandi curl è complicata, quali formati sono supportati?

Lo strumento riconosce apici singoli, apici doppi, escape con backslash in stile bash; apici doppi+escape ^ di Windows cmd; escape con backtick di PowerShell fondamentalmente. Si consiglia di usare il formato bash (avvolto in apici singoli). I comandi multilinea (con backslash \ di continuazione) supportano anche l'incolla, lo strumento rimuove automaticamente i ritorni a capo e i caratteri di continuazione. Se il tuo comando curl è particolarmente complesso (contiene variabili shell, sostituzione di comando $(...), pipe |, ecc.), si consiglia di eseguire prima il comando echo nel terminale per stampare il curl effettivo espanso e poi copiarlo, o semplificare manualmente prima (sostituire le variabili con valori reali).

Perché quando invio JSON con -d in curl il server riceve dati illeggibili/400?

Questo è uno degli errori più comuni di curl. L'opzione -d/--data di curl ha Content-Type predefinito application/x-www-form-urlencoded (formato form), non application/json. Se esegui direttamente curl -d '{"name":"demo"}' url, il server lo analizzerà come form (errore di analisi o dati vuoti). Devi aggiungere esplicitamente l'header -H "Content-Type: application/json" per inviare correttamente JSON. Questo strumento mostra un avviso arancione quando rileva un body ma senza Content-Type.

Il codice generato può essere copiato ed eseguito direttamente? Quali dipendenze devo installare?

Il codice della maggior parte dei linguaggi può essere eseguito direttamente utilizzando librerie standard (fetch/Go net/http/PHP cURL/C# HttpClient/PowerShell/wget sono integrati), non richiede installazione aggiuntiva. Altri richiedono librerie di terze parti: Axios (richiede npm install axios), node-fetch (richiede npm install node-fetch, Node 18+ ha fetch integrato senza installazione), Python requests (pip install requests), Python httpx (pip install httpx), Java OkHttp (richiede di importare la dipendenza okhttp3 con Maven/Gradle). Il codice per impostazione predefinita stampa il codice di stato e il testo della risposta, puoi modificare la logica di elaborazione secondo necessità.

È compatibile con l'upload di file multipart/form-data (parametro -F)?

Supporto di base: il parametro -F viene riconosciuto come body della richiesta, ma il codice generato attualmente tratta @file come stringa letterale invece di upload di file reale. L'upload di file richiede la lettura del contenuto del file locale, i metodi di elaborazione variano molto tra i linguaggi (JS usa FormData/FormData.append, Python usa il parametro files=, Go usa multipart.Writer). Si consiglia, sulla base del codice generato dallo strumento, di consultare la documentazione di upload di file della libreria corrispondente per apportare modifiche. Le versioni future miglioreranno il supporto multipart.

I miei comandi curl e dati sensibili verranno inviati?

Assolutamente no. L'intero processo di analisi e generazione del codice viene completato al 100% localmente nel tuo browser (JavaScript puramente frontend), i comandi curl, Token/Cookie/password negli header, i dati nel body della richiesta non vengono inviati a nessun server. Puoi usare questo strumento offline, non preoccuparti della divulgazione di informazioni sensibili.

Come viene gestito -k/--insecure per ignorare la verifica del certificato nel codice di ogni linguaggio?

Al rilevamento del parametro -k, questo strumento genera la configurazione corrispondente per ignorare la verifica del certificato per ogni linguaggio target: Python requests/httpx usa verify=False; Node.js imposta process.env.NODE_TLS_REJECT_UNAUTHORIZED='0'; Go crea tls.Config{InsecureSkipVerify: true} personalizzato; PHP imposta CURLOPT_SSL_VERIFYPEER=false e CURLOPT_SSL_VERIFYHOST=0; Java OkHttp richiede TrustManager personalizzato (viene aggiunto un avviso nei commenti nel codice, perché il codice è lungo); C# può personalizzare ServerCertificateCustomValidationCallback; PowerShell usa -SkipCertificateCheck (PS6+); wget usa --no-check-certificate; fetch nel browser non può ignorare i certificati (restrizione di sicurezza del browser, viene aggiunto un commento esplicativo nel codice). Nota: queste configurazioni sono solo per test di sviluppo locale, non disattivare mai la verifica dei certificati in produzione.

Perché il codice Go generato non segue i reindirizzamenti? Con -L dovrebbe seguirli?

Il comportamento predefinito di net/http di Go è di non seguire i reindirizzamenti (coincide con il comportamento predefinito di curl, curl deve aggiungere esplicitamente -L per seguire). Lo strumento, al rilevamento del parametro -L, genera un client vuoto (http.Client{} con CheckRedirect nil per impostazione predefinita, cioè segue 10 reindirizzamenti); senza -L genera un client con CheckRedirect che restituisce http.ErrUseLastResponse, non segue i reindirizzamenti (coincide con il comportamento di curl senza -L). Se vuoi che Go segua sempre i reindirizzamenti, puoi usare direttamente http.DefaultClient nel codice o personalizzare Client{Timeout: ...}.

Come gestisco le richieste che richiedono l'accesso/con Cookie?

Ci sono due modi:①Copia curl direttamente da DevTools del browser con sessione aperta (consigliato): fai clic con il tasto destro sulla richiesta→Copy as cURL, così cookie/header sono inclusi automaticamente, incolla e converti per eseguire direttamente;②In curl specifica manualmente il valore del Cookie con -b/--cookie (-b 'sessionid=abc; token=xyz'), specifica l'autenticazione Basic con -u/--user, specifica Bearer Token con -H "Authorization: Bearer xxx", lo strumento converte questi header tali e quali. Nota: i Cookie copiati dal browser hanno una validità, potrebbero scadere dopo alcune ore e dover essere ricopiati.

Perché il body JSON in Python requests usa il parametro json= invece di data=?

Il parametro data della libreria Python requests codifica dict come application/x-www-form-urlencoded, invia la stringa tale e quale, mentre il parametro json serializza automaticamente dict/lista come stringa JSON e imposta automaticamente l'header Content-Type: application/json (se non l'hai impostato manualmente). Questo strumento, al rilevamento che Content-Type contiene application/json e il body è JSON valido, analizza automaticamente il JSON come dict di Python e usa il parametro json=, così il codice è più conciso, non hai bisogno di json.dumps manualmente e non dimentichi l'header Content-Type. I body non JSON (form/XML/testo normale) usano il parametro data= per inviare la stringa originale.

Il comando curl è molto lungo con molti header, cosa faccio se il codice generato ha tutti gli header?

Il comando curl copiato da DevTools includerà molti header aggiunti automaticamente dal browser (Host, Connection, Accept, Accept-Encoding, Accept-Language, Sec-Fetch-*, sec-ch-ua, Upgrade-Insecure-Requests, ecc.), la maggior parte di questi header non deve essere impostata esplicitamente nel codice (i client HTTP aggiungeranno automaticamente valori predefiniti ragionevoli, come Accept-Encoding, Connection, Host, Content-Length, ecc.). Si consiglia, dopo aver copiato il codice generato, di rimuovere manualmente gli header non necessari, conservando almeno: Content-Type, Authorization, Cookie (se necessario), header di business personalizzati. Gli header superflui non solo rendono il codice brutto, ma possono causare comportamenti anomali (ad esempio impostando esplicitamente Accept-Encoding ma il client non decomprime automaticamente).

È compatibile con il parametro di proxy HTTPS (-x/--proxy)?

Attualmente il parametro di proxy HTTP (-x/--proxy) non viene ancora convertito automaticamente. La configurazione del proxy varia molto tra i linguaggi (JS fetch non ha supporto proxy nativo richiede Agent, Python usa il parametro proxies=, Go tramite Transport.Proxy, PHP usa CURLOPT_PROXY, C# usa WebProxy, Java usa OkHttpClient.Builder().proxy()). Gli header del proxy (autenticazione del proxy stesso) richiedono anche un'elaborazione separata. Nella versione corrente i parametri relativi al proxy vengono ignorati, puoi aggiungere manualmente la configurazione del proxy sulla base del codice generato, le versioni future miglioreranno il supporto al proxy.

Quali differenze ci sono con strumenti online come curlconverter.com?

Rispetto a strumenti noti come curlconverter.com, i vantaggi di curl-to-code di GeekFormat:①Elaborazione completamente locale (la logica di elaborazione di curlconverter è sul server o sul client), non carica dati, più sicuro;②Interfaccia e spiegazioni in cinese, intuitiva per gli sviluppatori cinesi;③Il codice generato si adatta meglio all'uso di produzione reale (ad esempio Python requests usa il parametro json= per il body JSON invece di data=, comportamento predefinito di Go allineato a curl, C# elabora Content-Type correttamente senza codificare rigidamente application/json);④Documentazione completa, FAQ, tabelle di confronto, risoluzione dei problemi, non solo genera codice ma ti aiuta a capire perché è scritto così;⑤Gratuito senza pubblicità, non richiede registrazione o accesso, non necessita di nessuna richiesta di rete per essere utilizzato.

Risoluzione dei problemi

Dopo aver incollato il comando curl viene visualizzato «URL non trovato»

Manca il comando curl prima dell'URL (hai incollato direttamente un frammento di header HTTP) L'URL è diviso su più righe ma non usa il backslash per la continuazione, lo strumento non riesce a riconoscere URL concatenate multilinea L'URL contiene caratteri speciali (&amp; ecc.) che vengono troncati dalla shell L'URL è tra apici singoli ma ha apici singoli annidati senza escape

Il codice Python requests generato restituisce 401/403 durante l'esecuzione

Cookie/Token scaduto: copiando curl da DevTools il Cookie era valido in quel momento, scade dopo un po' di tempo Manca User-Agent: alcune API convalidano User-Agent, il curl copiato dal browser ha l'UA del browser, ma il codice generato potrebbe conservarlo o perderlo Mancano gli header Referer/Origin: alcuni controlli anti-hotlink/CSRF verificano questi header Il sessionid non viene passato correttamente: alcuni siti richiedono prima l'accesso per ottenere un Cookie prima della richiesta

Invio dati JSON POST ma il server non li riceve

Manca l'header Content-Type: application/json: il Content-Type predefinito di curl -d è application/x-www-form-urlencoded, non JSON Virgolette doppie della stringa JSON non escapate: shell diverse (bash/cmd/PowerShell) gestiscono gli apici in modo diverso, copiare il formato sbagliato causa JSON incompleto Nel codice generato il JSON è doppiamente escapato (l'oggetto viene nuovamente JSON.stringify) Nel Body ci sono caratteri cinesi ma non sono codificati

Errore di certificato SSL/TLS durante l'esecuzione del codice generato

Il sito HTTPS di destinazione usa un certificato autofirmato: curl ha aggiunto -k ma il codice non lo ha applicato (verifica se è stata generata la configurazione per ignorare il certificato) Variabile d'ambiente Node.js non impostata: al rilevamento di -k viene generato process.env.NODE_TLS_REJECT_UNAUTHORIZED='0', deve essere posizionato prima della chiamata fetch SSL Inspection del proxy aziendale (certificato man-in-the-middle): devi aggiungere il certificato radice dell'azienda all'archivio di fiducia invece di disattivare la verifica verify=False di Python influisce solo su requests, l'urllib3 sottostante continuerà a generare InsecureRequestWarning

Il risultato della risposta del codice generato è diverso da curl

Perdita di header aggiunti automaticamente: il browser aggiunge automaticamente header come Host/Connection/Accept/Accept-Encoding/Accept-Language/Sec-Fetch-*, se questi header vengono conservati o meno influisce sulla risposta Gestione incoerente dei reindirizzamenti: fetch segue i reindirizzamenti per impostazione predefinita, Go non segue per impostazione predefinita, questo strumento genera la configurazione corrispondente in base al parametro -L Differenze di compressione/decompressione: con --compressed alcune librerie richiedono una configurazione esplicita per la decompressione automatica HTTP/2 vs HTTP/1.1: curl negozia HTTP/2 per impostazione predefinita, alcuni server vecchi sono sensibili alla versione HTTP Cookie Jar: curl -b invia i Cookie manualmente ogni volta, alcune librerie gestiscono i Cookie automaticamente causando cambiamenti di Cookie in richieste multiple

Il comando curl copiato è troppo lungo causando troncamento/errore durante l'incolla

Troppi header (ad esempio il browser ha aggiunto decine di header automaticamente): rimuovi manualmente gli header non necessari (sec-ch-ua, sec-fetch-*, Accept, Accept-Language e altri header non essenziali) File codificati in Base64/Body grande rendono il comando molto lungo: usa --data-binary @file per leggere il body da un file Limite di lunghezza della riga di comando di Windows cmd (8191 caratteri): usa PowerShell o WSL per copiare curl in formato bash Troncamento da spazi bianchi durante la copia: assicurati di copiare completamente da DevTools con il tasto destro

Glossario

cURL / curl
Strumento da riga di comando open source e libreria libcurl, per inviare richieste di protocolli come HTTP/HTTPS/FTP da riga di comando tramite URL, è lo strumento più utilizzato dagli sviluppatori per eseguire il debug delle API.
Metodo HTTP
Azione di richiesta HTTP, i più comuni sono GET (leggere), POST (creare), PUT (aggiornamento completo), PATCH (aggiornamento parziale), DELETE (eliminare), HEAD (ottenere header), OPTIONS (consultare le capacità del server).
Header
Coppie chiave-valore di metadati nella richiesta HTTP, come Content-Type, Authorization, User-Agent, Cookie, Accept, ecc., specificati in curl tramite -H/--header.
Body
Parte dati della richiesta HTTP, comune in POST/PUT/PATCH, specificata in curl tramite -d/--data/--data-binary/-F, i formati comuni sono JSON, form-urlencoded, multipart/form-data.
Content-Type
Header di richiesta/risposta che indica il tipo di media del body. application/json indica JSON, application/x-www-form-urlencoded indica form codificato URL, multipart/form-data indica form di upload file.
Autenticazione Basic
Autenticazione HTTP di base, trasmette nome utente e password tramite l'header Authorization: Basic base64(user:pass), specificata in curl con -u user:pass.
Bearer Token
Metodo di autenticazione basato su token, trasmesso tramite l'header Authorization: Bearer <token>, comune in JWT/OAuth2.
User-Agent
Header di richiesta che identifica il tipo di client (browser/crawler/script), curl invia per impostazione predefinita "curl/numero versione", molti siti web bloccano UA non browser, comunemente specificato con -A.
Cookie
Coppie chiave-valore inviate dal server tramite Set-Cookie e restituite dal browser nelle richieste successive tramite l'header Cookie, per mantenere le sessioni. curl -b invia Cookie, -c salva Cookie.
Referer
Header di richiesta che indica l'URL della pagina di origine della richiesta corrente, alcuni controlli anti-hotlink/CSRF lo verificano. Impostato in curl con -e.
Reindirizzamento (3xx)
Quando il server restituisce codici di stato 301/302/303/307/308, indica al browser di saltare a un nuovo URL. curl per impostazione predefinita non segue, aggiungi -L/--location per seguire.
--compressed
Opzione di curl, aggiunge automaticamente l'header Accept-Encoding: deflate, gzip e decomprime automaticamente la risposta. Senza impostarlo, la risposta potrebbe essere dati compressi illeggibili.
-k/--insecure
Opzione di curl, ignora la verifica del certificato HTTPS, solo per ambienti di test con certificati autofirmati, proibita in produzione.
fetch API
API di richieste HTTP JavaScript nativa del browser, restituisce Promise, compatibile con i browser moderni.
Axios
Libreria client HTTP popolare basata su Promise, compatibile con browser e Node.js, serializzazione JSON automatica, intercettori, annullamento per timeout.
OkHttp
Libreria client HTTP Java/Android di Square, alte prestazioni, supporto HTTP/2, pool di connessioni, GZIP trasparente.
HttpClient (.NET)
Client HTTP consigliato per C#/.NET, namespace System.Net.Http, API standard di .NET Core/.NET 5+.
Invoke-RestMethod
Cmdlet di richiesta HTTP integrato in PowerShell 3.0+, analizza automaticamente le risposte JSON/XML come oggetti PowerShell.

Tabella di confronto delle opzioni comuni di cURL con 11 linguaggi target

Opzione curlFunzioneJS fetchAxiosPython requestsGo net/httpPHP cURLJava OkHttpC# HttpClientPowerShellwget
-X METHODSpecificare il metodo HTTPmethod: 'POST'method: 'post'requests.request('POST')http.NewRequest('POST')CURLOPT_CUSTOMREQUEST.method()HttpMethod.Post-Method POST--method=POST
-H 'K: V'Aggiungere headerheaders: {}headers: {}headers={}req.Header.SetCURLOPT_HTTPHEADER.addHeader().Headers.TryAddWithoutValidation$headers=@{}--header=
-d 'data'Body della richiestabody: datadata: datadata=/json=strings.NewReaderCURLOPT_POSTFIELDSRequestBody.createnew StringContent-Body--body-data=
-u user:passAutenticazione BasicHeader Authorizationauth:{}auth=(u,p)req.SetBasicAuthCURLOPT_USERPWDCredentials.basicnew NetworkCredentialConverte automaticamente in Header--user/--password
-LSeguire i reindirizzamentiredirect:'follow'maxRedirects: Nallow_redirects=TrueCheckRedirect predefinitoCURLOPT_FOLLOWLOCATION.followRedirectsAllowAutoRedirect=trueSegue per impostazione predefinita-L
-kIgnorare verifica certificatoNon supportato nel browserhttpsAgentverify=FalseTLSClientConfigCURLOPT_SSL_VERIFYPEER=falseRichiede TrustManager personalizzatoServerCertificateCustomValidationCallback-SkipCertificateCheck--no-check-certificate
--compressedAccettare la compressioneSupportato per impostazione predefinitaDecomprime automaticamenteDecomprime automaticamenteRichiede gzip manualeDecomprime automaticamenteSupportato per impostazione predefinitaAutomaticDecompression-TransferEncodingNon decomprime per impostazione predefinita
-A UAUser-AgentHeader User-Agentheadersheaders={}req.Header.SetCURLOPT_USERAGENT.header()Predefinito-UserAgent--user-agent=
-b cookieCookieHeader Cookieheaders/withCredentialscookies={}req.Header.SetCURLOPT_COOKIE.header()CookieContainer-WebSession--header=
-m SECSTimeoutAbortControllertimeout:Ntimeout=Nhttp.Client.TimeoutCURLOPT_TIMEOUT.callTimeoutclient.Timeout-TimeoutSec--timeout=

Valori comuni di Content-Type e utilizzo con curl

Content-TypeUtilizzoEsempio curlNote
application/jsonInviare dati JSONcurl -H 'Content-Type: application/json' -d '{"a":1}'Tipo di API più utilizzato, -d non imposta questo header per impostazione predefinita, richiede -H esplicito
application/x-www-form-urlencodedForm codificato URLcurl -d 'name=a&amp;age=1'Questo è il tipo predefinito quando -d non ha -H
multipart/form-dataUpload di filecurl -F 'file=@a.png' -F 'name=a'-F imposta automaticamente questo Content-Type e boundary
text/plainTesto normalecurl -H 'Content-Type: text/plain' -d 'hello'Testo normale, poco utilizzato nelle API
application/octet-streamDati binaricurl --data-binary @file.binUsa --data-binary per inviare binario grezzo
application/xmlDati XMLcurl -H 'Content-Type: application/xml' -d '&lt;x/&gt;'Utilizzato da SOAP/API aziendali obsolete

Confronto di tre formati di Copy as cURL in Chrome DevTools

FormatoStile apiciCaratteri di escapeScenario di utilizzo
Copy as cURL (bash)Apici singoli '...'Escapa gli apici singoli con \'Linux/macOS/WSL/Git Bash, consigliato per incollare in questo strumento
Copy as cURL (cmd)Apici doppi "..."Escapa i caratteri speciali con ^Prompt dei comandi Windows cmd.exe
Copy as cURL (PowerShell)Apici doppi/backtickEscapa con ` Windows PowerShell 5/7
Copy as fetchTemplate strings JSNessun escape necessarioEseguire direttamente nella Console del browser