Menangani Tanggapan untuk Permintaan HTTP
Dalam bab ini, kita akan membahas lebih detail tentang respons yang diterima dari modul permintaan. Kami akan membahas detail berikut -
- Mendapatkan Respon
- Tanggapan JSON
- Respon RAW
- Respon Biner
Mendapatkan Respon
Kami akan membuat permintaan ke URL menggunakan metode request.get ().
import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users');
Getdata memiliki objek respons. Ia memiliki semua detail tanggapan. Kita bisa mendapatkan respon dengan 2 cara menggunakan ( teks ) dan (. Konten ). Menggunakan response.text akan memberi Anda data kembali dalam format teks seperti yang ditunjukkan di bawah ini -
Contoh
E:\prequests>python makeRequest.py
[
{
"id": 1,
"name": "Leanne Graham",
"username": "Bret",
"email": "[email protected]",
"address": {
"street": "Kulas Light",
"suite": "Apt. 556",
"city": "Gwenborough",
"zipcode": "92998-3874",
"geo": {
"lat": "-37.3159",
"lng": "81.1496"
}
},
"phone": "1-770-736-8031 x56442",
"website": "hildegard.org",
"company": {
"name": "Romaguera-Crona",
"catchPhrase": "Multi-layered client-server neural-net",
"bs": "harness real-time e-markets"
}
},
]
Anda akan melihat tanggapannya sama, seperti yang akan muncul di browser ketika Anda melihat sumber untuk URL seperti yang ditunjukkan di bawah ini -
Anda juga dapat mencoba URL .html dan melihat konten menggunakan response.text, ini akan sama dengan tampilan konten sumber untuk URL .html di browser.
Sekarang, mari kita coba response.content untuk URL yang sama dan lihat hasilnya.
Contoh
import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users')
print(getdata.content)
Keluaran
E:\prequests>python makeRequest.py
b'[\n {\n "id": 1,\n "name": "Leanne Graham",\n "username": "Bret",\n
"email": "[email protected]",\n "address": {\n "street": "Kulas Light
",\n "suite": "Apt. 556",\n "city": "Gwenborough",\n "zipcode": "
92998-3874",\n "geo": {\n "lat": "-37.3159",\n "lng": "81.149
6"\n }\n },\n "phone": "1-770-736-8031 x56442",\n "website": "hild
egard.org",\n "company": {\n "name": "Romaguera-Crona",\n "catchPhr
ase": "Multi-layered client-server neural-net",\n "bs": "harness real-time
e-markets"\n }\n },\n {\n "id": 2,\n "name": "Ervin Howell",\n
"username": "Antonette",\n "email": "[email protected]",\n "address": {\n
"street": "Victor Plains",\n "suite": "Suite 879",\n "city": "Wisoky
burgh",\n "zipcode": "90566-7771",\n "geo": {\n "lat": "-43.950
9",\n "lng": "-34.4618"\n }\n },\n "phone": "010-692-6593 x091
25",\n "website": "anastasia.net",\n "company": {\n "name": "Deckow-Crist",
\n "catchPhrase": "Proactive didactic contingency",\n "bs":
"synergize scalable supply-chains"\n }\n },\n {\n "id": 3,\n "name":
"Clementine Bauch",\n "username": "Samantha",\n "email":
"[email protected]",
\n "address": {\n "street": "Douglas Extension",\n "suite": "Suite
847",\n "city": "McKenziehaven",\n "zipcode": "59590-4157",\n "ge
o": {\n "lat": "-68.6102",\n "lng": "-47.0653"\n }\n },\n
Responsnya diberikan dalam byte. Anda akan mendapatkan suratbdi awal tanggapan. Dengan modul permintaan, Anda bisa mendapatkan pengkodean yang digunakan dan juga mengubah pengkodean jika diperlukan. Misalnya, untuk mendapatkan encoding Anda bisa menggunakan response.encoding.
print(getdata.encoding)
Keluaran
utf-8
Anda dapat mengubah pengkodean sebagai berikut - Anda dapat menggunakan pengkodean pilihan Anda.
getdata.encoding = 'ISO-8859-1'
Tanggapan JSON
Anda juga bisa mendapatkan respons untuk permintaan Http dalam format json dengan menggunakan metode response.json () sebagai berikut -
Contoh
import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users')
print(getdata.json())
Keluaran
E:\prequests>python makeRequest.py
[{'id': 1, 'name': 'Leanne Graham', 'username': 'Bret', 'email': 'Sincere@april.
biz', 'address': {'street': 'Kulas Light', 'suite': 'Apt. 556', 'city': 'Gwenborough',
'zipcode': '92998-3874', 'geo': {'lat': '-37.3159', 'lng': '81.1496'}},
'
phone': '1-770-736-8031 x56442', 'website': 'hildegard.org', 'company': {'name':
'Romaguera-Crona', 'catchPhrase': 'Multi-layered client-server neural-net', 'bs':
'harness real-time e-markets'}}]
Respon RAW
Jika Anda memerlukan respons mentah untuk URL Http, Anda dapat menggunakan response.raw, juga tambahkan stream = True di dalam metode get seperti yang ditunjukkan di bawah ini -
Contoh
import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users', stream=True)
print(getdata.raw)
Keluaran
E:\prequests>python makeRequest.py
<urllib3.response.HTTPResponse object at 0x000000A8833D7B70>
Untuk membaca lebih banyak konten dari data mentah Anda dapat melakukannya sebagai berikut -
print(getdata.raw.read(50))
Keluaran
E:\prequests>python makeRequest.py
b'\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03\x95\x98[o\xe38\x12\x85\xdf\xe7W\x10y\
xda\x01F\x82.\xd4m\x9f\xdc\x9dd\xba\xb7\x93\xf4\x06q\xef4\x06\x83A@K\x15\x89m'
Respon Biner
Untuk mendapatkan respon biner kita bisa menggunakan response.content.
Contoh
import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users')
print(getdata.content)
Keluaran
E:\prequests>python makeRequest.py
b'[\n {\n "id": 1,\n "name": "Leanne Graham",\n "username": "Bret",\n
"email": "[email protected]",\n "address": {\n "street": "Kulas Light
",\n "suite": "Apt. 556",\n "city": "Gwenborough",\n "zipcode": "
92998-3874",\n "geo": {\n "lat": "-37.3159",\n "lng": "81.149
6"\n }\n },\n "phone": "1-770-736-8031 x56442",\n "website":
"hildegard.org",\n "company": {\n "name": "Romaguera-Crona",\n "catchPhr
ase": "Multi-layered client-server neural-net",\n "bs": "harness real-time
e-markets"\n }\n },\n {\n "id": 2,\n "name": "Ervin Howell",\n "us
ername": "Antonette",\n "email": "[email protected]",\n "address": {\n
"street": "Victor Plains",\n "suite": "Suite 879",\n "city": "Wisoky
burgh",\n "zipcode": "90566-7771",\n "geo": {\n "lat": "-43.950
9",\n "lng": "-34.4618"\n }\n },\n "phone": "010-692-6593 x091
25",\n "website": "anastasia.net",\n "company": {\n "name": "Deckow-Crist",
\n "catchPhrase": "Proactive didactic contingency",\n "bs": "syn
ergize scalable supply-chains"\n }\n },\n {\n "id": 3,\n "name":
"Clementine Bauch",\n "username": "Samantha",\n "email": "[email protected]",
\n "address": {\n "street": "Douglas Extension",\n "suite": "Suite
847",\n "city": "McKenziehaven",\n "zipcode": "59590-4157",\n "
geo": {\n "lat": "-68.6102",\n "lng": "-47.0653"\n }\n },\n
Responsnya diberikan dalam byte. Anda akan mendapatkan suratbdi awal tanggapan. Respons biner sebagian besar digunakan untuk permintaan non-teks.