HTTP रिक्वेस्ट के लिए रिस्पॉन्स हैंडल करना
इस अध्याय में, हम अनुरोध मॉड्यूल से प्राप्त प्रतिक्रिया का अधिक विवरण प्राप्त करेंगे। हम निम्नलिखित विवरणों पर चर्चा करेंगे -
- रिस्पांस मिल रहा है
- JSON प्रतिक्रिया
- रॉ रिस्पांस
- बाइनरी रिस्पांस
रिस्पांस मिल रहा है
हम URL को request.get () विधि का उपयोग करके अनुरोध करेंगे।
import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users');
गेटडाटा के पास प्रतिक्रिया वस्तु है। इसमें प्रतिक्रिया का सारा विवरण है। हम ( पाठ ) और ( सामग्री ) का उपयोग करके 2 तरीकों से प्रतिक्रिया प्राप्त कर सकते हैं । Response.text का उपयोग करने से आपको पाठ प्रारूप में डेटा नीचे दिखाया गया है -
उदाहरण
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"
}
},
]
आप देखेंगे कि प्रतिक्रिया वैसी ही है, जैसा कि जब आप नीचे दिखाए गए URL के लिए स्रोत देखते हैं तो यह ब्राउज़र में कैसे दिखाई देता होगा -
आप .html URL को भी आज़मा सकते हैं और response.text का उपयोग करके सामग्री देख सकते हैं, यह ब्राउज़र में .html URL के लिए दृश्य स्रोत सामग्री के समान होगा।
अब, हम उसी URL के लिए response.content आज़माएँ और आउटपुट देखें।
उदाहरण
import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users')
print(getdata.content)
उत्पादन
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
प्रतिक्रिया बाइट्स में दी गई है। आपको एक पत्र मिलेगाbप्रतिक्रिया की शुरुआत में। अनुरोध मॉड्यूल के साथ, आप उपयोग किए गए एन्कोडिंग प्राप्त कर सकते हैं और यदि आवश्यक हो तो एन्कोडिंग को भी बदल सकते हैं। उदाहरण के लिए, एन्कोडिंग प्राप्त करने के लिए आप response.encoding का उपयोग कर सकते हैं।
print(getdata.encoding)
उत्पादन
utf-8
आप एन्कोडिंग को इस प्रकार बदल सकते हैं - आप अपनी पसंद के एन्कोडिंग का उपयोग कर सकते हैं।
getdata.encoding = 'ISO-8859-1'
JSON प्रतिक्रिया
आप प्रतिक्रिया स्वरूप json प्रारूप में Http अनुरोध के लिए प्रतिक्रिया भी प्राप्त कर सकते हैं। json () विधि निम्नानुसार है -
उदाहरण
import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users')
print(getdata.json())
उत्पादन
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'}}]
रॉ रिस्पांस
यदि आपको Http URL के लिए कच्ची प्रतिक्रिया की आवश्यकता है, तो आप response.raw का उपयोग कर सकते हैं, भी जोड़ सकते हैं stream = True नीचे दी गई विधि के अनुसार प्राप्त करें -
उदाहरण
import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users', stream=True)
print(getdata.raw)
उत्पादन
E:\prequests>python makeRequest.py
<urllib3.response.HTTPResponse object at 0x000000A8833D7B70>
कच्चे डेटा से अधिक सामग्री के लिए पढ़ने के लिए आप निम्नानुसार कर सकते हैं -
print(getdata.raw.read(50))
उत्पादन
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'
बाइनरी रिस्पांस
द्विआधारी प्रतिक्रिया पाने के लिए हम response.content का उपयोग कर सकते हैं।
उदाहरण
import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users')
print(getdata.content)
उत्पादन
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
प्रतिक्रिया बाइट्स में दी गई है। आपको एक पत्र मिलेगाbप्रतिक्रिया की शुरुआत में। द्विआधारी प्रतिक्रिया का उपयोग ज्यादातर गैर-पाठ अनुरोधों के लिए किया जाता है।