Pakai kembali request hasil debugging
Perintah curl dari dokumentasi API atau DevTools berguna untuk mereproduksi masalah. Saat request yang sama perlu masuk ke skrip atau aplikasi, URL, header, dan body harus ditulis dalam format pustaka yang digunakan. Konverter ini menyiapkan kode tersebut dan memberi catatan tentang perbedaan perilaku saat dijalankan.
Cara konversi curl ke Python atau JavaScript
Tempel satu perintah curl dengan URL HTTP atau HTTPS lengkap. Pilih bahasa tujuan, periksa metode dan body, lalu salin atau unduh kode. Proses konversi berlangsung di browser dan tidak mengirim request ke API.
Pertahankan tanda kutip untuk nilai yang mengandung spasi. Jika menyalin dari DevTools, gunakan format bash. Ganti variabel shell dan substitusi perintah dengan nilai sebenarnya terlebih dahulu. Unggahan file, form multipart, dan opsi lanjutan yang tidak didukung perlu dikonfigurasi manual.
Sesuaikan output dengan lingkungan aplikasi
Python memakai Requests yang dipasang lewat pip install requests. Body teks dikirim sebagai byte UTF-8. PHP memerlukan ekstensi cURL aktif. JavaScript menggunakan Fetch di browser atau versi Node.js yang mendukungnya.
Teks JSON dipertahankan tanpa serialisasi ulang, sehingga angka besar, spasi, dan kunci duplikat tidak diubah pada tahap konversi. Alat ini tidak memvalidasi JSON. Tambahkan timeout dan penanganan error sesuai kebutuhan; Requests juga dapat membaca pengaturan proxy serta .netrc dari lingkungan.
Mengapa curl berhasil tetapi Fetch terkena CORS?
Browser menerapkan CORS dan mengelola header tertentu. Header tersebut dihilangkan dari output Fetch dan disebutkan dalam catatan. Kode memakai credentials: omit, sehingga cookie sesi browser tidak otomatis ikut terkirim. Jika header itu diperlukan, pertimbangkan Python atau PHP di sisi server.
Tanpa -L, Fetch menangani pengalihan secara manual dan browser bisa memberikan respons opaque. Saat pengalihan diaktifkan, perubahan metode serta penerusan kredensial bergantung pada pustaka tujuan. Uji rantai pengalihan di lingkungan aplikasi.
Dua nilai form dengan nama yang sama
Kedua nilai tag tetap disertakan. --data-urlencode mengodekan spasi, lalu Requests menerima body yang sudah jadi. Cara ini menjaga field berulang yang bisa tertimpa jika disimpan dalam dictionary.
curl 'https://example.com/api/tags' --data-urlencode 'tag=cloud hosting' --data-urlencode 'tag=linux'import requests
url = "https://example.com/api/tags"
headers = {
"Content-Type": "application/x-www-form-urlencoded"
}
body = "tag=cloud%20hosting&tag=linux".encode("utf-8")
response = requests.request(
method="POST",
url=url,
headers=headers,
data=body,
allow_redirects=False,
verify=True,
)
print(response.status_code)
print(response.text)
Pemetaan opsi curl
| Opsi curl | Hasil konversi |
|---|---|
URL / --url | Satu URL HTTP atau HTTPS lengkap |
-X / --request | Metode HTTP yang ditetapkan secara eksplisit |
-H / --header | Nama dan nilai; duplikat serta instruksi header kosong perlu diperiksa |
-d / --data / --data-raw / --data-binary | Body inline dengan urutan argumen data tetap |
--data-urlencode / -G | Mengodekan nilai; -G memindahkan data ke query URL |
--json | Mempertahankan teks JSON dan menambahkan header JSON bawaan |
-u / --user | Basic Auth dalam format username:password |
-L / -I / -k | Pengalihan, HEAD, dan verifikasi TLS; Fetch tidak mendukung -k |
-b / -A / -e | Cookie, User-Agent, dan Referer mengikuti pembatasan browser |
--compressed / -s / -S / -v / -i | Dekompresi memakai pustaka tujuan; tampilan terminal tidak ditiru |
Pertanyaan seputar konversi
Apakah perintah langsung dijalankan?
Tidak. Alat hanya membaca teks dan menghasilkan kode di browser. URL dan kredensial tidak diuji. Request baru dikirim saat Anda menjalankan kode hasilnya.
Bisakah memakai Copy as cURL dari DevTools?
Bisa untuk satu request berformat POSIX dengan opsi yang didukung. Pilih format bash. Opsi yang tidak didukung memunculkan error, bukan diabaikan tanpa pemberitahuan.
Apakah isi JSON berubah?
Body disimpan sebagai teks, tanpa menulis ulang angka, spasi, atau kunci duplikat. Opsi --json tidak memeriksa validitas sintaks JSON.
Mengapa ada header yang hilang di Fetch?
Sebagian header dikendalikan browser dan tidak dapat ditetapkan bebas lewat Fetch. Header yang dihilangkan ditampilkan dalam catatan. Content-Length dihitung ulang oleh pustaka HTTP.
Apa yang perlu diperiksa sebelum membagikan kode?
Token, kata sandi, dan cookie dari input dapat tetap ada dalam kode. Periksa sebelum membagikan atau menyimpannya di repositori. Sesuaikan pula timeout, pengelolaan kredensial, dan penanganan error.
