Käyttöohje
- Kopioi pyyntö curl-muodossa esimerkiksi selaimen kehittäjätyökaluista (Verkko-välilehti, hiiren kakkospainike, Kopioi cURL-muodossa) tai API-dokumentaatiosta.
- Liitä se kenttään. Rivien jatkaminen \-merkillä onnistuu.
- Valitse JavaScript fetch, Node.js axios, Python requests tai PHP cURL.
- Lue koodin alla olevat huomautukset ja kopioi tai lataa tulos.
Näin se toimii
Muunnin jakaa ensin komennon sanoiksi samaan tapaan kuin POSIX-komentotulkki: yksinkertaiset lainausmerkit, kaksoislainausmerkit (kenoviivalla merkityt erikoismerkit huomioiden), $'…'-merkkijonot ja kenoviivalla jatketut rivit tunnistetaan. Komentotulkin muuttujia, kuten $TOKEN, ei laajenneta; ne säilyvät tekstinä.
Tuetut curl-valitsimet: URL (tai --url), -X/--request, -H/--header, -d/--data, --data-ascii, --data-raw, --data-binary, --data-urlencode, --json, -F/--form ja --form-string (kentät ja @tiedosto-lataukset ;type=-määrityksellä), -u/--user, -G/--get, -I/--head, -A/--user-agent, -e/--referer, -b/--cookie (evästejonot), -L/--location ja --compressed. Lyhyet valitsimet voidaan yhdistää, kuten -sSL, ja arvot voidaan liittää suoraan, kuten -XPOST.
Säännöt noudattavat curlia: useat -d-arvot yhdistetään &-merkillä; data tekee pyynnöstä POSTin, ellei -X tai -G toisin määrää; -G lisää datan URL-osoitteeseen kyselymerkkijonona; --json asettaa Content-Type- ja Accept-otsikot arvoon application/json. Kun runko on JSONia ja Content-Type ilmoittaa niin, koodi lähettää oikean objektin (Pythonissa json=, PHP:ssä json_encode-taulukko) eikä suojattua merkkijonoa. Moniosaisissa lomakkeissa Content-Type-otsikko jätetään kirjaston määritettäväksi, jotta boundary on oikein.
-k/--insecure jätetään tarkoituksella huomiotta, ja huomautus selittää asian. Valitsimet, jotka vain muuttavat curlin omaa tulostetta (-s, -S, -v, -i, -o, --fail ja vastaavat), jätetään huomiotta ja niistä lisätään huomautus. Mikä tahansa muu valitsin aiheuttaa selkeän virheen, jossa valitsin nimetään, sen sijaan että koodi tekisi hiljaa jotain muuta. Yksi ero säilyy: curl seuraa uudelleenohjauksia vain, kun -L on annettu, kun taas fetch, axios ja requests seuraavat niitä oletuksena; PHP-koodi seuraa niitä vain, kun -L on annettu.
Työkalu vain kirjoittaa koodia. Se ei koskaan lähetä pyyntöä, joten komennon tokenit ja salasanat eivät ole käytössä missään.
Esimerkit
Selainpyynnön toistaminen Pythonissa
Kopioi epäonnistuva API-kutsu Chromen Network-välilehdeltä cURL-muodossa ja muunna se Python requests -koodiksi. Otsikot, evästeet ja JSON-runko siirtyvät mukana, joten voit toistaa virheen skriptissä.
API-dokumentaation käyttö Node.js:ssä
API-dokumentaatiossa näkyy "curl -u key: https://api.example.com/v1/charges -d amount=2000 -d currency=eur". axios-versio käyttää auth: { username: "key", password: "" } ja lomakekoodattua runkoa.
Tiedoston lähetys PHP:ssä
”curl -F 'file=@invoice.pdf;type=application/pdf' -F 'note=March' https://x.io/upload” muuttuu CURLOPT_POSTFIELDS-rakenteeksi, jossa on new CURLFile('invoice.pdf', 'application/pdf') ja note-kenttä.
Usein kysytyt kysymykset
Lähettääkö työkalu pyyntöni?
Ei. Se vain jäsentää komennon tekstin ja kirjoittaa koodia. Pyyntöä ei tehdä, joten komennossa olevia API-avaimia tai evästeitä ei käytetä eikä tallenneta.
Miksi -k/--insecure-valitsinta ei muunneta?
Varmennetarkistusten poistaminen altistaa yhteyden salakuuntelulle. Luotu koodi pitää tarkistukset käytössä; jos palvelimen varmenne ei ole luotettu, korjaa varmenne tai luottamusvarasto.
Miksi saan ilmoituksen ”valitsinta ei tueta”?
Muunnin kääntää vain valitsimet, joiden merkityksen se voi toistaa tarkasti. Välityspalvelimet, asiakasvarmenteet, evästetiedostot ja vastaavat valitsimet hylätään, jotta et saa koodia, joka toimii eri tavalla kuin curl.
Toimiiko se Windowsin cmd-komentojen kanssa?
Parhaiten toimivat komennot, jotka on kopioitu muodossa ”cURL (bash)”. Windowsin cmd käyttää rivinvaihtoon ^-merkkiä ja erilaista lainaamista; rivien lopussa oleva ^ hyväksytään, mutta muita cmd-escapeja ei välttämättä tueta.
Tietosuoja
Komento käsitellään vain selaimessa, eikä pyyntöä lähetetä. Mitään ei ladata, tallenneta tai sisällytetä analytiikkaan.