Pack Camo

Konversi cURL ke Kode

Ubah perintah curl menjadi fetch, axios, Python requests, Go, PHP dan lainnya.

Semuanya berjalan di perangkat Anda — tidak ada yang diunggah.

Perintah curl

POST api.example.com

fetch

23 baris

// Browsers do not let scripts set Cookie; fetch ignores them.
const response = await fetch("https://api.example.com/v1/orders?expand=items", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    Authorization: "Bearer sk_test_4eC39HqLyjWDarjtT1zdp7dc",
    Cookie: "session=abc123; theme=dark",
  },
  body: JSON.stringify({
    "customer": "cus_42",
    "items": [
      {
        "sku": "TSHIRT-M",
        "qty": 2
      }
    ],
    "gift": false,
    "note": null
  }),
  signal: AbortSignal.timeout(30000),
});

console.log(response.status, await response.text());

Tempel perintah curl, dapatkan kode yang langsung jalan

Konverter ini mengubah perintah curl menjadi request HTTP yang sama dalam JavaScript fetch, axios, Node.js, Python requests, Go net/http, ekstensi curl PHP atau Rust reqwest. Perintah dibaca seperti cara shell Anda dan curl sendiri membacanya: tanda kutip tunggal dan ganda, string $'…', sambungan baris, flag gabungan seperti -sSL, data -d berulang dan field multipart -F. Header, cookie, autentikasi basic dan bearer, body JSON, timeout dan pengaturan TLS ikut dibawa, dan apa pun yang tidak bisa diterjemahkan akan ditunjukkan. Perintah diurai di browser Anda dan tidak pernah dikirim ke mana pun, sehingga token dan cookie di dalamnya tetap privat.

Cara mengonversi perintah curl ke kode

  1. 1Salin request sebagai curl. Di Chrome, Edge atau Firefox, buka developer tools, masuk ke tab Network, klik kanan sebuah request dan pilih Copy › Copy as cURL. Varian bash maupun cmd Windows sama-sama bisa dipakai.
  2. 2Tempel perintah ke panel kiri. Perintah multi-baris dengan sambungan \ atau ^ tidak masalah.
  3. 3Pilih bahasa target: fetch, axios, Node.js, Python, Go, PHP atau Rust, atau JSON untuk melihat request hasil penguraian.
  4. 4Baca catatan di bawah kode untuk flag yang diabaikan atau perlu diperhatikan, lalu salin kodenya atau unduh sebagai file.

Apa saja yang dikonversi

Method dan URL
-X/--request, --url, -G/--get (data dipindah ke query string), -I/--head, -T/--upload-file (PUT). Tanpa -X, method dipilih seperti cara curl memilihnya: POST jika ada body, GET jika tidak.
Header
-H/--header, -A/--user-agent, -e/--referer, -b/--cookie dan -r/--range. Header yang berulang digabungkan.
Body
-d/--data, --data-raw, --data-binary dan --data-urlencode (digabung dengan &, seperti yang dilakukan curl), --json, serta field multipart -F/--form termasuk upload file dengan ;type= dan ;filename=.
Autentikasi
-u/--user untuk basic auth, --digest, --oauth2-bearer, dan kredensial yang ditulis di URL.
Opsi koneksi
-k/--insecure, -L/--location, --compressed, -m/--max-time dan -x/--proxy, jika bahasa target punya padanannya.

Body JSON menjadi objek sungguhan

Jika body berupa JSON, baik karena Content-Type menyatakannya maupun karena isinya jelas JSON, body akan dirapikan dan, jika bahasanya memungkinkan, ditulis sebagai nilai native: objek yang diteruskan ke JSON.stringify untuk fetch, objek biasa untuk axios, dan dictionary yang diteruskan sebagai json= untuk Python requests, dengan true, false dan null diubah menjadi True, False dan None. Ini jauh lebih mudah diedit daripada string yang di-escape. Matikan Format body JSON untuk mempertahankan body persis byte demi byte seperti aslinya.

fetch di browser vs Node.js

Kedua target fetch berbeda karena browser membatasi apa yang boleh dikirim sebuah halaman. Script di browser tidak bisa mengatur Cookie, Referer, Host, Accept-Encoding atau header Sec- apa pun, tidak bisa melewati pemeriksaan sertifikat dan tidak bisa membaca file dari path. Target browser memberi tahu header mana yang akan dibuang. Target Node.js bisa melakukan semua itu: file dibaca dengan openAsBlob dan readFile, dan --insecure atau proxy menjadi dispatcher undici.

Untuk mengecek arti status respons setelah request dijalankan, lihat referensi kode status HTTP. Nilai query yang perlu di-escape bisa dienkode dengan URL encoder.

Aturan tanda kutip, sudah ditangani

Sebagian besar kesalahan konversi berasal dari tanda kutip. Di shell POSIX, kutip tunggal mempertahankan semuanya apa adanya, kutip ganda tetap memproses \" dan \$, dan $'…' memahami escape seperti \n dan \x41. Backslash di akhir baris melanjutkan perintah. cmd Windows memakai ^ untuk escape dan sambungan baris, dan itulah yang dihasilkan "Copy as cURL (cmd)". Tokenizer mengikuti setiap aturan ini, sehingga body yang dikirim kode Anda persis sama dengan body yang akan dikirim curl.

Apa pun setelah pipe, titik koma atau redirect, seperti | jq ., adalah milik shell, bukan curl, dan diabaikan dengan sebuah catatan.

Pertanyaan yang sering diajukan

Apakah perintah curl saya dikirim ke server?
Tidak. Perintah diurai dan kode dibuat di browser Anda. Token, cookie dan password di dalamnya tidak pernah meninggalkan perangkat Anda.
Bagaimana cara menyalin request sebagai curl dari browser?
Buka developer tools (F12), pilih tab Network, klik kanan request lalu pilih Copy, kemudian Copy as cURL. Di Windows, versi bash maupun cmd bisa ditempel di sini.
Opsi curl apa saja yang didukung?
Opsi yang mendefinisikan request: method, URL, header, cookie, semua varian -d, --json, form -F, autentikasi -u, -G, -I, -T, -L, -k, --compressed, --max-time dan --proxy. Opsi output seperti -s, -o dan -v tidak memengaruhi request dan diabaikan.
Kenapa kode fetch untuk browser tidak menyertakan beberapa header?
Browser melarang script mengatur header seperti Cookie, Referer, Host dan Accept-Encoding, dan fetch membuangnya tanpa pemberitahuan. Gunakan target Node.js jika Anda perlu mengirimnya.
Bagaimana upload file dikonversi?
Field -F seperti file=@photo.jpg menjadi field file multipart yang membaca photo.jpg dari disk di Node.js, Python, Go, PHP dan Rust. Di fetch browser, field ini memakai file yang dipilih lewat <input type="file">, karena halaman web tidak bisa membaca file berdasarkan path.
Apa fungsi --data-urlencode?
Opsi ini melakukan percent-encoding pada nilai sebelum dikirim, sehingga name=a b&c dikirim sebagai name=a%20b%26c. Konverter menerapkan encoding yang sama, sehingga kode yang dihasilkan mengirim byte yang sama.
Apakah curl mengikuti redirect?
Tidak, kecuali Anda memberikan -L. Sebagian besar library HTTP mengikuti redirect secara default, sehingga kode yang dihasilkan biasanya tetap mengikutinya; ekstensi curl PHP hanya mengikutinya jika -L diberikan.