Traffine I/O

Bahasa Indonesia

2022-08-10

requests

Pustaka requests

Pustaka requests adalah salah satu pustaka yang paling populer dan banyak digunakan dalam Python untuk melakukan permintaan HTTP. Pustaka ini menyembunyikan kompleksitas dari permintaan di balik API yang indah dan sederhana, memungkinkan Anda mengirim permintaan HTTP/1.1 dengan mulus. Dengan menggunakan pustaka ini, Anda dapat menambahkan konten seperti header, data formulir, file multipart, dan parameter melalui pustaka Python sederhana ke permintaan HTTP.

Menginstal Pustaka requests

Untuk menginstal requests, jalankan perintah pip berikut:

bash
$ pip instal requests

Permintaan GET

Permintaan GET adalah salah satu metode HTTP yang paling umum. Digunakan untuk mengambil atau membaca data dari resource. Dalam pustaka requests Python, membuat permintaan GET cukup mudah:

python
import requests

response = requests.get('https://api.github.com')

# Now we have a Response object called 'response'.
print(response.status_code)
200

Permintaan POST

Permintaan POST digunakan untuk mengirim data ke server untuk membuat resource baru. Data yang dikirim ke server dengan POST disimpan dalam tubuh permintaan. Berikut adalah contoh permintaan POST menggunakan requests:

python
import requests

data = {
    'name': 'John',
    'age': '30'
}

response = requests.post('https://httpbin.org/post', data=data)

print(response.status_code)
print(response.json())

Pada contoh ini, kita mengirimkan sebuah kamus sebagai data, yang akan diubah oleh requests sebelum dikirimkan.

Permintaan PUT

Permintaan PUT mirip dengan permintaan POST karena mengirimkan data ke server. Perbedaannya adalah permintaan PUT bersifat idempoten, yang berarti melakukan permintaan PUT yang sama ke URL multiple kali akan selalu menghasilkan hasil yang sama. Berikut adalah contoh permintaan PUT:

python
import requests

data = {
    'name': 'John',
    'age': '30'
}

response = requests.put('https://httpbin.org/put', data=data)

print(response.status_code)
print(response.json())

Permintaan DELETE

Permintaan DELETE digunakan untuk menghapus resource dari server. Berikut adalah contoh permintaan DELETE:

python
import requests

response = requests.delete('https://httpbin.org/delete')

print(response.status_code)
print(response.json())

Permintaan HEAD

Permintaan HEAD mirip dengan permintaan GET, tetapi meminta server untuk mengembalikan hanya header respons, bukan resource yang sebenarnya (misalnya, tidak ada pesan dalam tubuh). Ini berguna untuk memeriksa ketersediaan resource atau memeriksa header respons tanpa mengunduh konten sebenarnya. Berikut adalah contoh permintaan HEAD:

python
import requests

response = requests.head('https://httpbin.org/get')

print(response.status_code)
print(response.headers)

Permintaan PATCH

Permintaan PATCH digunakan untuk menerapkan modifikasi parsial pada resource, bukan menggantikan seluruh resource seperti permintaan PUT. Berikut adalah contoh permintaan PATCH:

python
import requests

data = {
    'name': 'John'
}

response = requests.patch('https://httpbin.org/patch', data=data)

print(response.status_code)
print(response.json())

Batas Waktu (Timeouts)

Secara default, permintaan tidak akan mencapai batas waktu kecuali Anda mengatur durasi batas waktu. Secara umum, disarankan untuk mengatur durasi batas waktu agar permintaan tidak terjebak secara tak terbatas. Berikut ini adalah cara mengatur batas waktu:

python
import requests

try:
    response = requests.get('https://httpbin.org/delay/5', timeout=3)
except requests.exceptions.Timeout:
    print("The request timed out")

Pada contoh ini, permintaan akan menghasilkan pengecualian requests.exceptions.Timeout jika tidak selesai dalam 3 detik.

Pengalihan (Redirects)

Secara default, permintaan GET, OPTIONS, POST, PUT, PATCH, dan DELETE ke URL akan secara otomatis dialihkan ke lokasi baru (jika kode status respons adalah 301, 302, 303, 307, atau 308). Jika Anda tidak menginginkan perilaku ini, Anda dapat menonaktifkan pengalihan otomatis:

python
import requests

response = requests.get('http://github.com', allow_redirects=False)
print(response.status_code)

Pada contoh ini, permintaan GET ke http://github.com akan mengembalikan kode status 301, tetapi tidak akan mengikuti pengalihan ke https://github.com karena kita telah mengatur allow_redirects=False.

Header

Header menyediakan informasi tambahan tentang permintaan atau respons. Untuk menambahkan header ke permintaan Anda, lewatkan sebuah kamus ke parameter headers. Berikut ini caranya:

python
import requests

headers = {'user-agent': 'my-app/0.0.1'}

response = requests.get('https://httpbin.org/get', headers=headers)

print(response.json())

Mengirimkan Data JSON

JSON (JavaScript Object Notation) adalah format data umum yang memiliki berbagai penggunaan dalam pertukaran data, termasuk penggunaan pada layanan web. Banyak API bekerja dengan data JSON.

Berikut adalah contoh bagaimana Anda dapat mengirimkan data JSON:

python
import requests
import json

data = {
    'name': 'John',
    'age': 30
}

headers = {'Content-type': 'application/json'}

response = requests.post('https://httpbin.org/post', data=json.dumps(data), headers=headers)

print(response.json())

Pada contoh ini, kita pertama-tama mengimpor modul json untuk mengubah kamus Python kita menjadi string JSON menggunakan json.dumps(). Kita juga mengatur header Content-type menjadi application/json untuk memberi tahu server bahwa kita mengirimkan data JSON.

Mengirimkan Data Formulir

Data formulir biasanya digunakan untuk mengirimkan data dari formulir HTML ke server. Data dikirimkan sebagai serangkaian pasangan kunci-nilai, di mana setiap pasangan mewakili bidang formulir dan nilainya. Pustaka requests memudahkan pengiriman data formulir tanpa perlu memformat secara manual.

Ada dua jenis data formulir yang dapat Anda kirimkan: application/x-www-form-urlencoded dan multipart/form-data. Yang pertama adalah default dan cocok untuk kebanyakan kasus, tetapi jika Anda perlu mengirimkan file, Anda harus menggunakan multipart/form-data.

Berikut adalah contoh pengiriman multipart/form-data:

python
import requests

data = {
    'name': 'John',
    'age': 30
}

files = {
    'file': open('file.txt', 'rb')
}

response = requests.post('https://httpbin.org/post', data=data, files=files)

print(response.json())

Pada contoh ini, kita membuka sebuah file dalam mode biner, dan menyertakannya dalam kamus files. Ketika kita membuat permintaan POST, requests secara otomatis akan mengatur header Content-Type menjadi multipart/form-data, dan memformat data dan file sesuai kebutuhan.

Ingatlah untuk selalu menutup file setelah menggunakannya untuk membebaskan resource sistem. Cara yang baik untuk memastikan file ditutup dengan benar adalah dengan menggunakan pernyataan with.

python
with open('file.txt', 'rb') as f:
    files = {'file': f}
    response = requests.post('https://httpbin.org/post', data=data, files=files)

Referensi

https://requests.readthedocs.io/en/latest/

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!