Cara Mengonversi cURL ke Python untuk Membuat Permintaan REST API

Kuasai ubah perintah cURL ke kode Python. Buka interaksi API & permintaan web di proyek Python Anda.

Ardianto Nugroho

Ardianto Nugroho

15 April 2025

Cara Mengonversi cURL ke Python untuk Membuat Permintaan REST API

Pernahkah Anda mendapati diri menatap perintah cURL, berharap Anda bisa mengayunkan tongkat ajaib dan mengubahnya menjadi kode Python? Anda tidak sendirian! Dunia permintaan web bisa terasa seperti labirin, dengan cURL dan Python menjadi dua jalur berbeda menuju tujuan yang sama. Tetapi bagaimana jika saya memberi tahu Anda bahwa mengonversi cURL ke Python bukan hanya mungkin—tetapi sebenarnya cukup menyenangkan?

Bayangkan bisa mengambil perintah cURL apa pun dan, dengan beberapa penyesuaian, menjalankannya dengan lancar di skrip Python Anda. Kedengarannya seperti kekuatan super, bukan? Nah, ambil jubah Anda, karena kita akan memulai petualangan yang akan mengubah Anda dari pemula cURL menjadi ahli permintaan Python!

Mengapa Mengonversi cURL ke Python?

Mengapa Mengonversi cURL ke Python?
Mengapa Mengonversi cURL ke Python?

Mari kita hadapi: cURL sangat bagus untuk pengujian cepat, tetapi ketika Anda membangun aplikasi yang lengkap, Python adalah tempatnya. Inilah mengapa melakukan lompatan dari cURL ke Python sepadan dengan waktu Anda:

  1. Anda dapat memasukkan panggilan API langsung ke proyek Python Anda
  2. Otomatiskan hal-hal membosankan yang biasanya Anda lakukan secara manual dengan cURL
  3. Manfaatkan pustaka dan alat Python yang luar biasa
  4. Bangun aplikasi yang lebih keren dan lebih kompleks di sekitar hal-hal API

Tentu, saya akan dengan senang hati menambahkan bagian yang memperkenalkan Apidog sebagai alternatif Postman. Berikut adalah bagian baru yang secara organik menggabungkan Apidog ke dalam konten:

Gunakan APIDog untuk Melakukan Panggilan REST API dengan Mudah

Gunakan APIDog untuk Melakukan Panggilan REST API dengan Mudah
Gunakan APIDog untuk Melakukan Panggilan REST API dengan Mudah

Saat kita menjelajahi proses konversi perintah curl ke Python, ada baiknya menyebutkan alat yang telah membuat gelombang di dunia pengembangan API: Apidog. Platform API all-in-one ini dengan cepat menjadi alternatif Postman yang populer, dan ia memiliki beberapa fitur menarik yang dapat membantu perjalanan pengembangan API kita.

button

Bagaimana Apidog Cocok dengan Alur Kerja Pengujian API Anda

Apidog bukan hanya tentang membuat Permintaan API - ini adalah lingkungan pengembangan API komprehensif yang berfungsi sebagai Alternatif Postman terbaik. Tetapi ia memiliki beberapa fitur yang membuat proses curl ke Python lebih lancar:

Pembuat Permintaan Visual: Seperti Postman, Apidog memungkinkan Anda membuat permintaan API secara visual. Ini bisa menjadi langkah perantara yang bagus ketika Anda mencoba memahami perintah curl yang kompleks.

Pembuatan Kode: Setelah Anda membuat permintaan Anda di Apidog, Anda dapat menghasilkan kode Python untuk itu. Ini sangat berguna ketika Anda berurusan dengan perintah curl yang rumit dan ingin melihat bagaimana tampilannya di Python.

Impor Perintah Curl: Apidog dapat mengimpor perintah curl secara langsung, yang kemudian dikonversi menjadi format visualnya. Dari sana, Anda dapat mengubah permintaan dan menghasilkan kode Python.

Meskipun Apidog bukan konverter curl ke Python langsung, ia dapat menjadi alat yang berharga dalam toolkit pengembangan API Anda. Antarmuka visual dan fitur pembuatan kodenya dapat membantu menjembatani kesenjangan antara perintah curl dan skrip Python, terutama bagi pengembang yang lebih menyukai pendekatan visual.

button

Langkah-Langkah Menggunakan Curl dengan Python

Sebelum kita menyingsingkan lengan baju, mari kita lihat beberapa pintasan:

  1. curl-to-python: Situs web yang melakukan konversi untuk Anda
  2. curlconverter: Alat baris perintah yang mengubah cURL menjadi Python (dan bahasa lain juga)

Alat-alat ini berguna, tetapi mengetahui cara melakukannya sendiri seperti memiliki kekuatan super di saku belakang Anda.

Langkah 1: Dapatkan Pustaka requests untuk Petualangan Curl Python Anda

Pertama-tama, mari kita dapatkan bintang pertunjukan—pustaka requests:

pip install requests

Langkah 2: Dekode Perintah Curl untuk Konversi Python

Mari kita lihat perintah cURL ini:

curl -X POST "https://api.example.com/v1/users" \
     -H "Authorization: Bearer TOKEN123" \
     -H "Content-Type: application/json" \
     -d '{"name": "John Doe", "email": "john@example.com"}'

Langkah 3: Impor requests untuk Permintaan Curl Python Anda

Mulai skrip Python Anda dengan:

import requests

Langkah 4: Siapkan URL untuk Python Curl GET atau POST Anda

url = "https://api.example.com/v1/users"

Langkah 5: Tentukan Header untuk Permintaan Curl Python Anda dengan Otentikasi

headers = {
    "Authorization": "Bearer TOKEN123",
    "Content-Type": "application/json"
}

Langkah 6: Siapkan Data untuk Python Curl POST Anda

data = {
    "name": "John Doe",
    "email": "john@example.com"
}

Langkah 7: Buat Permintaan REST API Python Curl

Inilah cara Anda melakukan Python cURL POST:

response = requests.post(url, headers=headers, json=data)

Langkah 8: Tangani Respons dalam Skrip Python Curl Anda

if response.status_code == 200:
    print("Woohoo! Berhasil!")
    print(response.json())
else:
    print(f"Ups! Error {response.status_code}")
    print(response.text)
Buat Permintaan cURL GET, POST Menggunakan Python
Buat Permintaan cURL GET, POST Menggunakan Python

Buat Permintaan cURL GET, POST Menggunakan Python

Hal yang Perlu Diketahui: Cara Menggunakan Curl Python

  1. Instal pustaka requests: pip install requests
  2. Impor requests dalam skrip Anda: import requests
  3. Gunakan metode seperti requests.get(), requests.post(), dll., untuk membuat permintaan HTTP
  4. Tangani respons menggunakan properti seperti response.text, response.json(), response.status_code

Cara Menggunakan Curl Python: Contoh Dasar

import requests

# GET request
response = requests.get('https://api.example.com/data')
print(response.json())

# POST request
data = {'key': 'value'}
response = requests.post('https://api.example.com/submit', json=data)
print(response.status_code)

Perintah Curl di Python: Operasi Umum

Permintaan GET:

requests.get(url)

Permintaan POST:

requests.post(url, data={'key': 'value'})

Menambahkan header:

headers = {'User-Agent': 'MyApp/1.0'}
requests.get(url, headers=headers)

Menangani otentikasi:

requests.get(url, auth=('username', 'password'))

Tujuan: Apa itu Perintah Curl?

Perintah curl adalah alat untuk mentransfer data ke dan dari server, mendukung berbagai protokol termasuk HTTP, HTTPS, FTP, dan lainnya. Ini biasanya digunakan untuk:

  1. Menguji API
  2. Mengunduh file
  3. Mengirim data ke server
  4. Men-debug masalah jaringan

Di Python, kita mereplikasi fungsionalitas curl terutama menggunakan pustaka requests, yang menyediakan cara yang lebih Pythonic untuk berinteraksi dengan layanan web dan API.

Ingat, meskipun curl adalah alat baris perintah, pustaka requests Python menawarkan fungsionalitas serupa di dalam skrip Python Anda, memungkinkan operasi yang lebih kompleks dan integrasi yang lebih baik dengan basis kode Python Anda secara keseluruhan.

Buat Permintaan cURL GET, POST dengan Python:

Untuk permintaan Python cURL GET, semudah:

response = requests.get(url, headers=headers)

Kita sudah melihat POST, tetapi berikut adalah pengingat:

response = requests.post(url, headers=headers, json=data)

Dan, inilah cara membuat Permintaan cURL di Python dengan Otentikasi

from requests.auth import HTTPBasicAuth

response = requests.get(url, auth=HTTPBasicAuth('username', 'password'))

Untuk beberapa permintaan, Anda dapat menggunakan Sesi:

session = requests.Session()
session.headers.update({"Authorization": "Bearer TOKEN123"})

response1 = session.get("https://api.example.com/endpoint1")
response2 = session.post("https://api.example.com/endpoint2", json=data)

Jika Anda ingin mempercepatnya, Anda dapat menggunakan async:

import aiohttp
import asyncio

async def fetch(session, url):
    async with session.get(url) as response:
        return await response.text()

async def main():
    async with aiohttp.ClientSession() as session:
        html = await fetch(session, 'http://python.org')
        print(html)

asyncio.run(main())

Praktik Terbaik untuk Membuat Permintaan REST API cURL dengan Python

1. Tangani Kesalahan: Selalu Periksa Jika Terjadi Kesalahan

Saat mengonversi curl ke Python, penanganan kesalahan sangat penting. Jangan hanya berasumsi bahwa permintaan Anda akan selalu berhasil. Inilah cara melakukannya dengan benar:

try:
    response = requests.get(url)
    response.raise_for_status()  # Menimbulkan HTTPError untuk respons buruk
except requests.exceptions.RequestException as e:
    print(f"Ups! Terjadi kesalahan: {e}")
    # Tangani kesalahan dengan tepat
else:
    # Proses respons yang berhasil
    data = response.json()
    print(f"Berhasil! Mendapatkan data: {data}")

Pendekatan ini menangkap kesalahan jaringan, batas waktu, dan status HTTP yang buruk. Ini jauh lebih baik daripada hanya berharap semuanya berfungsi!

2. Sembunyikan Rahasia: Simpan Kunci API di Variabel Lingkungan

Jangan pernah, sekali pun, melakukan hardcode kunci atau token API Anda dalam skrip Python Anda. Ini adalah resep untuk bencana. Sebagai gantinya, gunakan variabel lingkungan:

import os

api_key = os.environ.get('MY_API_KEY')
if not api_key:
    raise ValueError("Kunci API tidak ditemukan. Atur variabel lingkungan MY_API_KEY.")

headers = {"Authorization": f"Bearer {api_key}"}
response = requests.get(url, headers=headers)

Dengan cara ini, Anda dapat dengan aman membagikan kode Anda tanpa mengekspos rahasia Anda. Ini adalah keharusan untuk setiap permintaan curl Python dengan otentikasi.

3. Catat Hal-Hal: Ini Akan Menyelamatkan Anda Saat Melakukan Debug

Pencatatan adalah teman terbaik Anda ketika terjadi kesalahan. Gunakan modul pencatatan bawaan Python:

import logging

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

try:
    response = requests.get(url)
    response.raise_for_status()
except requests.exceptions.RequestException as e:
    logger.error(f"Permintaan gagal: {e}")
else:
    logger.info(f"Permintaan berhasil: {response.status_code}")
    logger.debug(f"Konten respons: {response.text}")

Ini memberi Anda jejak yang jelas untuk diikuti saat men-debug contoh REST API cURL Python Anda.

4. Bersikap Baik: Hormati Batas Tingkat API

Banyak API memiliki batas tingkat. Mengabaikannya adalah cara cepat untuk mencabut akses Anda. Berikut adalah cara sederhana untuk menangani pembatasan tingkat:

import time

def rate_limited_request(url, max_retries=3, delay=1):
    for attempt in range(max_retries):
        response = requests.get(url)
        if response.status_code == 429:  # Terlalu Banyak Permintaan
            time.sleep(delay * (attempt + 1))  # Backoff eksponensial
        else:
            return response
    raise Exception("Batas tingkat terlampaui setelah percobaan ulang maksimum")

Fungsi ini mencoba lagi dengan backoff eksponensial jika mencapai batas tingkat. Ini sempurna untuk permintaan Python cURL GET dan POST.

5. Uji Kode Anda: Tulis Pengujian untuk Memastikan Permintaan Anda Berfungsi

Pengujian sangat penting, terutama saat bekerja dengan API eksternal. Berikut adalah pengujian sederhana menggunakan pytest:

import pytest
import requests
from your_module import make_api_request  # Fungsi Anda yang membuat permintaan

def test_api_request(mocker):
    # Mock fungsi requests.get
    mock_response = mocker.Mock()
    mock_response.status_code = 200
    mock_response.json.return_value = {"data": "test"}
    mocker.patch('requests.get', return_value=mock_response)

    # Panggil fungsi Anda
    result = make_api_request('https://api.example.com')

    # Tegaskan hasilnya
    assert result['data'] == 'test'
    requests.get.assert_called_once_with('https://api.example.com')

Pengujian ini mengejek respons API, sehingga Anda dapat menguji kode Anda tanpa benar-benar mengenai API. Ini bagus untuk memastikan konversi Python curl ke requests Anda berfungsi seperti yang diharapkan.

Kesimpulan

Dan begitulah! Anda baru saja naik level dari pemula cURL menjadi ninja permintaan Python. Sekarang Anda dapat mengambil perintah cURL apa pun dan mengubahnya menjadi kode Python yang ramping lebih cepat daripada Anda dapat mengucapkan "permintaan HTTP."

Ingat, latihan membuat sempurna. Semakin banyak Anda mengonversi, semakin mudah jadinya. Segera, Anda akan menulis permintaan Python dalam tidur Anda (meskipun kami tidak menyarankan pengkodean saat tidak sadar).

Jadi, majulah dan taklukkan dunia permintaan web! Skrip Python Anda akan menjadi jauh lebih kuat, dan API di mana-mana gemetar ketakutan. Selamat membuat kode, Anda penyihir curl-ke-Python!

Tentu, saya akan menulis FAQ yang membahas pertanyaan dan topik ini. Berikut adalah bagian FAQ yang komprehensif:

Pertanyaan yang Sering Diajukan: Curl dan Python

Apa itu curl di Python?

Curl sebenarnya bukan bagian dari Python. Ini adalah alat baris perintah terpisah untuk membuat permintaan HTTP. Namun, Python memiliki pustaka seperti requests yang menyediakan fungsionalitas serupa dengan curl, memungkinkan Anda membuat permintaan HTTP langsung dari kode Python Anda.

Apa padanan Python dari curl?

Padanan Python yang paling populer dari curl adalah pustaka requests. Ini menyediakan cara yang sederhana dan elegan untuk membuat permintaan HTTP. Berikut adalah contoh cepat:

import requests

response = requests.get('https://api.example.com/data')
print(response.text)

Ini setara dengan perintah curl:

curl https://api.example.com/data

Apakah Curl lebih cepat daripada permintaan Python?

Dalam kebanyakan kasus, perbedaan kecepatan antara curl dan pustaka requests Python dapat diabaikan untuk kasus penggunaan tipikal. Curl mungkin memiliki sedikit keunggulan dalam kinerja mentah untuk permintaan sederhana dan sekali pakai karena memiliki overhead yang lebih sedikit. Namun, requests Python menawarkan lebih banyak fleksibilitas dan integrasi yang lebih mudah dengan kode Python Anda, yang sering kali lebih besar daripada perbedaan kinerja kecil apa pun.

Apa perbedaan antara wget dan curl di Python?

Wget dan curl adalah alat baris perintah, bukan pustaka Python. Perbedaan utamanya adalah:

  1. Wget terutama untuk mengunduh file, sedangkan curl lebih serbaguna untuk berbagai operasi HTTP.
  2. Di Python, Anda biasanya akan menggunakan requests atau urllib untuk mereplikasi fungsionalitas wget dan curl.

Untuk fungsionalitas seperti wget di Python:

import requests

url = 'https://example.com/file.zip'
response = requests.get(url)
with open('file.zip', 'wb') as f:
    f.write(response.content)

Mengembangkan API dengan Apidog

Apidog adalah alat pengembangan API yang membantu Anda mengembangkan API dengan lebih mudah dan efisien.