मुख्य सामग्री पर जाएँ

REST API के लिए Python HTTP Requests की शुरुआत

जानें कि REST APIs के साथ इंटरैक्ट करने के लिए Python HTTP requests का उपयोग कैसे करें। यह गाइड requests मॉड्यूल पर फोकस के साथ GET और POST रिक्वेस्ट्स, उदाहरण, और API इंटीग्रेशन की सर्वोत्तम प्रथाएँ कवर करता है।
· 15 मि॰ पढ़ें

AI के साथ खोजें

एप्लिकेशन प्रोग्रामिंग इंटरफेसेज़ (APIs) सॉफ़्टवेयर मध्यस्थ होते हैं। इनका काम विभिन्न एप्लिकेशनों को एक‑दूसरे से संवाद करने देना है। ये सूक्ष्म मध्यस्थ रोज़मर्रा की ज़िंदगी में दिखाई देते हैं—चाहे आपको इसका एहसास हो या न हो। उदाहरण के लिए, यदि आपने आज कोई इंस्टेंट मैसेज भेजा है, तो आपने API का इस्तेमाल किया है। 

और विशिष्ट रूप से, APIs लोगों को कोड के ज़रिये डेटा भेजने और प्राप्त करने देती हैं। हालांकि, APIs का इस्तेमाल ज़्यादातर डेटा प्राप्त करने के लिए किया जाता है। मसलन, आप यह ब्लॉग पोस्ट पढ़ पा रहे हैं क्योंकि आपके वेब ब्राउज़र ने इस पेज का डेटा DataCamp सर्वर से प्राप्त किया है। 

लेकिन वेब सर्वर यूँ ही बेतरतीब डेटा नहीं भेजते। यह वैसा ही होगा जैसे आप रेस्तरां जाएँ और वेटर यूँ ही कोई भी खाना ले आए। डेटा प्राप्त करने के लिए सर्वर को अनुरोध भेजना पड़ता है, तभी वह डेटा के साथ जवाब देता है। यह बात रेस्तरां के वेटर पर भी लागू होती है, और यदि आप किसी API से डेटा प्राप्त करना चाहते हैं, तो आप सर्वर को API अनुरोध भेजते हैं और वह उपयुक्त डेटा के साथ प्रतिक्रिया देता है।  

इस लेख में हम requests लाइब्रेरी के कुछ मूल घटकों से गुजरेंगे और आपको शुरुआत करने में मदद के लिए कुछ कोड उदाहरण देंगे। यह requests लाइब्रेरी सीखने लायक है क्योंकि यह Python में HTTP requests भेजने का de facto उद्योग मानक है। जैसा आप देखेंगे, यह रिक्वेस्ट बनाने की सारी जटिलताओं को एक सरल API के पीछे छिपा देती है, जिससे आप सेवाओं से संवाद करने और अपने एप्लिकेशन में डेटा उपभोग पर ध्यान केंद्रित कर सकें।

इस ट्यूटोरियल का कोड ऑनलाइन चलाएं और संपादित करें

कोड चलाएं

Python requests मॉड्यूल का उपयोग करके GET और POST रिक्वेस्ट बनाना

जल्दी में हैं? यहाँ एक साधारण GET और POST रिक्वेस्ट के लिए Python सिंटैक्स है:

1. GET रिक्वेस्ट

import requests

# The API endpoint
url = "https://jsonplaceholder.typicode.com/posts/1"

# A GET request to the API
response = requests.get(url)

# Print the response
print(response.json())

2. POST रिक्वेस्ट

import requests

# The API endpoint
url = "https://jsonplaceholder.typicode.com/posts"

# Data to be sent
data = {
    "userID": 1,
    "title": "Making a POST request",
    "body": "This is the data we created."
}

# A POST request to the API
response = requests.post(url, json=data)

# Print the response
print(response.json())

REST APIs और उनके HTTP आधार को समझना

हमने स्थापित किया है कि APIs सॉफ़्टवेयर मध्यस्थ हैं। आप इन्हें एक ऐसे सॉफ़्टवेयर इंटरफ़ेस के रूप में भी सोच सकते हैं जो अन्य एप्लिकेशनों को विशिष्ट डेटा और विधियों तक पहुँच देता है। 

APIs बनाने के लिए सबसे लोकप्रिय आर्किटेक्चर में से एक REpresentational State Transfer (REST) पैटर्न है। REST आर्किटेक्चर क्लाइंट और सर्वर को एक‑दूसरे से स्वतंत्र रूप से लागू करने में सक्षम बनाता है, बिना एक‑दूसरे के बारे में जाने। इसका मतलब है कि किसी भी पक्ष का कोड बदला जा सकता है, बिना इस चिंता के कि बदलाव दूसरे पक्ष को कैसे प्रभावित करेगा। 

REST APIs इसलिए उन दिशानिर्देशों के सेट का पालन करते हैं जिनका उद्देश्य सॉफ़्टवेयर के बीच संचार को सरल बनाना है, जिससे डेटा तक पहुँचने की प्रक्रिया और सीधी व तार्किक हो जाती है। यदि आपको ये दिशानिर्देश नहीं पता तो चिंता न करें; शुरुआत करने के लिए इनका ज्ञान आवश्यक नहीं है—ज़रूरी यह है कि REST सेवाएँ डेटा कैसे उजागर करती हैं। 

REST वेब सेवाओं से डेटा इंटरनेट पर एक सार्वजनिक URL के माध्यम से उजागर किया जाता है, जिसे HTTP रिक्वेस्ट भेजकर एक्सेस किया जा सकता है।  

HTTP रिक्वेस्ट मेथड्स का अवलोकन

दोबारा रेस्तरां वाले उदाहरण पर लौटते हैं; खाना ऑर्डर करने के लिए वेटर आपके पास आता है, और आप बताते हैं कि आपको क्या चाहिए। फिर वेटर आपका अनुरोध शेफ तक पहुँचाता है, जो खाना बनाकर वेटर को देता है ताकि वह आपको लौटा सके। दूसरे शब्दों में, जब तक आपका अनुरोध नहीं जाता, शेफ आपका खाना नहीं बनाएगा। 

REST APIs भी ऐसे ही हैं: वे कार्रवाई करने से पहले HTTP रिक्वेस्ट मेथड्स सुनती हैं। HTTP कुछ रिक्वेस्ट मेथड्स को परिभाषित करता है जो API को बताते हैं कि किसी दिए गए संसाधन पर कौन‑सा ऑपरेशन करना है। यह बताता है कि दिए गए एंडपॉइंट पर स्थित संसाधनों के साथ कैसे इंटरैक्ट करना है। 

HTTP मेथड्स कई हैं, लेकिन REST APIs के साथ पाँच सबसे सामान्य रूप से प्रयोग होते हैं: 

HTTP Methodविवरण
GETडेटा प्राप्त करें
POSTडेटा बनाएँ
PUTमौजूदा डेटा अपडेट करें
PATCHमौजूदा डेटा आंशिक रूप से अपडेट करें
DELETEडेटा हटाएँ

डेटा विश्लेषण और डेटा साइंस में, बहुत संभव है कि आप सबसे ज़्यादा GET रिक्वेस्ट ही करें। क्योंकि कुछ डेटासेट्स तक पहुँचने के लिए यह आवश्यक मेथड है। इसके बारे में और जानें DataCamp के Intermediate Importing Data in Python कोर्स में।

जब आप किसी वेब सर्वर को अनुरोध भेजते हैं, तो API एक प्रतिक्रिया लौटाती है। प्रतिक्रिया के साथ एक HTTP स्टेटस कोड संलग्न होता है। स्टेटस कोड का उद्देश्य प्रतिक्रिया के बारे में अतिरिक्त जानकारी देना है ताकि क्लाइंट को प्राप्त अनुरोध के प्रकार का पता चल सके।

API Endpoints क्या होते हैं?

किसी URL से यह निर्धारित होता है कि आप वेब सर्वर पर किस डेटा के साथ इंटरैक्ट कर रहे हैं। जैसे वेब पेज का URL एक पेज से जुड़ा होता है, वैसे ही किसी एंडपॉइंट का URL API के विशेष संसाधनों से जुड़ा होता है। अतः, एंडपॉइंट को एक डिजिटल स्थान कहा जा सकता है जहाँ API अपने सर्वर पर किसी विशेष संसाधन के बारे में आने वाले प्रश्नों को प्राप्त करता है—इसे संचार चैनल के दूसरे सिरे की तरह समझें। 

और संदर्भ देने के लिए, REST APIs सार्वजनिक URLs का एक सेट उजागर करती हैं जिन्हें क्लाइंट एप्लिकेशन वेब सेवा के संसाधनों तक पहुँचने के लिए अनुरोध कर सकते हैं। REST API द्वारा उजागर किए गए इन सार्वजनिक URLs को “एंडपॉइंट्स” कहा जाता है।

Python का उपयोग करके HTTP रिक्वेस्ट बनाना

Python का requests मॉड्यूल डेवलपर्स को REST APIs के साथ इंटरैक्ट करने के लिए कोड लिखने में सक्षम बनाता है। यह उन्हें Python से HTTP रिक्वेस्ट भेजने देता है, बिना उन जटिलताओं की चिंता किए जो आमतौर पर ऐसे कार्यों के साथ आती हैं (जैसे URLs में क्वेरी स्ट्रिंग्स को मैन्युअल रूप से जोड़ना, PUT और POST डेटा को फ़ॉर्म‑एन्कोड करना, आदि)। 

हालाँकि Python में HTTP रिक्वेस्ट करने का de facto मानक माना जाता है, requests मॉड्यूल Python की स्टैंडर्ड लाइब्रेरी का हिस्सा नहीं है—इसे इंस्टॉल करना पड़ता है। 

requests मॉड्यूल इंस्टॉल करने का सबसे सीधा तरीका pip है: 

python -m pip install requests

हमेशा सिफारिश की जाती है कि अलग‑अलग प्रोजेक्ट्स के लिए आवश्यक Python पैकेजों को वर्चुअल एनवायरनमेंट्स के ज़रिये मैनेज किया जाए; इस तरह, एक प्रोजेक्ट के पैकेज दूसरे प्रोजेक्ट्स के सिस्टम टूल्स में हस्तक्षेप कर उन्हें ख़राब नहीं करेंगे क्योंकि वे अलग‑थलग होते हैं—ग्लोबली इंस्टॉल नहीं होते। 

अब जब हमने requests मॉड्यूल इंस्टॉल कर लिया है, तो देखते हैं यह कैसे काम करता है। इस DataLab वर्कबुक में कोड के साथ साथ चलें। 

Python में GET रिक्वेस्ट बनाना

हम पहले ही स्थापित कर चुके हैं कि GET REST APIs के साथ काम करते समय सबसे सामान्य HTTP रिक्वेस्ट मेथड्स में से एक है। यह आपको (क्लाइंट) वेब सर्वर्स से डेटा प्राप्त करने देता है। 

यह जानना ज़रूरी है कि GET केवल पढ़ने का ऑपरेशन है, यानी यह केवल मौजूदा संसाधनों तक पहुँचने के लिए उपयुक्त है, इन्हें बदलने के लिए नहीं। 

requests मॉड्यूल कैसे काम करता है, यह दिखाने के लिए हम JSONPlaceholder का उपयोग करेंगे, जो परीक्षण और प्रोटोटाइपिंग के लिए निःशुल्क उपलब्ध एक नकली API है। 

import requests

# The API endpoint
url = "https://jsonplaceholder.typicode.com/posts/1"

# A GET request to the API
response = requests.get(url)

# Print the response
response_json = response.json()
print(response_json)

"""
{'userId': 1, 'id': 1, 'title': 'sunt aut facere repellat provident occaecati excepturi optio reprehenderit', 'body': 'quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto'}
"""

ऊपर दिए गए कोड में, हमने यह किया: 

  1. वह API एंडपॉइंट परिभाषित किया जिससे डेटा प्राप्त करना था।

  2. परिभाषित एंडपॉइंट से डेटा प्राप्त करने के लिए requests.get(url) मेथड का उपयोग किया। 

  3. response.json() मेथड का उपयोग कर प्रतिक्रिया डेटा को एक dictionary ऑब्जेक्ट में संग्रहीत किया; ध्यान दें, यह इसलिए काम करता है क्योंकि परिणाम JSON फ़ॉर्मेट में है—अन्यथा एक त्रुटि उठती।   

  4. अंतिम चरण में JSON प्रतिक्रिया डेटा को प्रिंट किया। 

हम API से लौटे स्टेटस कोड को इस तरह भी जाँच सकते हैं: 

# Print status code from original response (not JSON)
print(response.status_code)

"""
200
"""

आप Python में GET रिक्वेस्ट को आर्ग्युमेंट्स भी दे सकते हैं। इसके लिए हमें ऊपर दिए गए कोड में थोड़ा बदलाव करना होगा। नया कोड इस प्रकार है:

# The API endpoint
url = "https://jsonplaceholder.typicode.com/posts/"

# Adding a payload
payload = {"id": [1, 2, 3], "userId":1}

# A get request to the API
response = requests.get(url, params=payload)

# Print the response
response_json = response.json()

for i in response_json:
    print(i, "\n")

"""
{'userId': 1, 'id': 1, 'title': 'sunt aut facere repellat provident occaecati excepturi optio reprehenderit', 'body': 'quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto'}

{'userId': 1, 'id': 2, 'title': 'qui est esse', 'body': 'est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla'}

{'userId': 1, 'id': 3, 'title': 'ea molestias quasi exercitationem repellat qui ipsa sit aut', 'body': 'et iusto sed quo iure\nvoluptatem occaecati omnis eligendi aut ad\nvoluptatem doloribus vel accusantium quis pariatur\nmolestiae porro eius odio et labore et velit aut'}
"""

यहाँ हमने क्या अलग किया: 

  1. API एंडपॉइंट बदला। ध्यान दें कि अब अंत में 1 नहीं है। 

  2. payload को एक dictionary में परिभाषित किया।  

  3. requests.get() मेथड के param आर्ग्युमेंट में payload पास किया। 

  4. यह एक list ऑब्जेक्ट लौटा, इसलिए हमने सूची के माध्यम से लूप चलाकर प्रत्येक आइटम को नई पंक्ति में प्रिंट किया। 

Python में POST रिक्वेस्ट बनाना

GET रिक्वेस्ट आपको डेटा प्राप्त करने देती हैं; POST रिक्वेस्ट आपको नया डेटा बनाने देती हैं। आइए देखें कि हम JSONPlaceholder सर्वर पर नया डेटा कैसे बना सकते हैं।

# Define new data to create
new_data = {
    "userID": 1,
    "id": 1,
    "title": "Making a POST request",
    "body": "This is the data we created."
}

# The API endpoint to communicate with
url_post = "https://jsonplaceholder.typicode.com/posts"

# A POST request to tthe API
post_response = requests.post(url_post, json=new_data)

# Print the response
post_response_json = post_response.json()
print(post_response_json)

"""
{'userID': 1, 'id': 101, 'title': 'Making a POST request', 'body': 'This is the data we created.'}
"""

ऊपर दिए गए कोड में, हमने यह किया: 

  1. एक नया संसाधन बनाया जिसे हम JSONPlaceholder API में जोड़ना चाहते थे।

  2. नए डेटा को POST करने के लिए एंडपॉइंट परिभाषित किया।

  3. requests.post() मेथड का उपयोग कर POST रिक्वेस्ट भेजी। ध्यान दें कि post() मेथड में json पैरामीटर सेट किया गया था; यह इसलिए ताकि हम API को स्पष्ट रूप से बताएँ कि निर्दिष्ट URL पर एक JSON ऑब्जेक्ट भेजा जा रहा है। 

  4. response.json() मेथड का उपयोग कर प्रतिक्रिया डेटा को एक dictionary ऑब्जेक्ट में संग्रहीत किया।

  5. अंतिम चरण में JSON प्रतिक्रिया डेटा प्रिंट किया। 

पर, ठहरिए!

अगला कोड पढ़ने से पहले, 20 सेकंड लें और सोचें कि API कौन‑सा स्टेटस कोड लौटाएगी। 

याद रखें: इस बार हमने सिर्फ़ डेटा प्राप्त नहीं किया, बल्कि नया संसाधन बनाया है। 

ठीक है, ये रहा… 

# Print status code from original response (not JSON)
print(post_response.status_code)

"""
201
"""

Python HTTP Requests: उन्नत विषय

Python के साथ HTTP रिक्वेस्ट बनाना आम तौर पर आसान होता है; हालाँकि, कभी‑कभी अधिक उन्नत सेटअप की ज़रूरत पड़ती है या समस्याओं का सामना करना पड़ता है। यहाँ कुछ चुनौतियाँ हैं जिनसे आप दो‑चार हो सकते हैं और उनका समाधान कैसे करें। 

HTTP रिक्वेस्ट का प्रमाणीकरण

अब तक, REST API के साथ हमारी इंटरैक्शन काफ़ी सीधे थे। JSONPlaceholder API आपसे इंटरैक्ट करना शुरू करने के लिए किसी भी प्रमाणीकरण की मांग नहीं करता। हालाँकि, कई बार ऐसा होता है जब REST API कुछ विशिष्ट एंडपॉइंट्स तक पहुँच देने से पहले प्रमाणीकरण माँगती है—ख़ासकर जब आप संवेदनशील डेटा से काम कर रहे हों। 

उदाहरण के लिए, यदि आप GitHub पर इंटीग्रेशन बनाना, डेटा प्राप्त करना, और अपने वर्कफ़्लो को स्वचालित करना चाहते हैं, तो आप GitHub REST API के साथ ऐसा कर सकते हैं। हालाँकि, GitHub REST API पर कई ऑपरेशन्स प्रमाणीकरण की माँग करते हैं, जैसे प्रमाणित उपयोगकर्ताओं के बारे में सार्वजनिक और निजी जानकारी प्राप्त करना। 

Python requests मॉड्यूल का उपयोग करते हुए एक सरल उपाय इस प्रकार है: 

from requests.auth import HTTPBasicAuth

private_url = "https://api.github.com/user"
github_username = "username"
token = "token"

private_url_response = requests.get(
    url=private_url,
    auth=HTTPBasicAuth(github_username, token)
)

private_url_response.status_code

"""
200
"""

ऊपर दिए गए कोड में हमने:

  1. HTTPBasicAuth ऑब्जेक्ट को requests.auth से इम्पोर्ट किया। यह ऑब्जेक्ट दिए गए रिक्वेस्ट ऑब्जेक्ट से HTTP बेसिक ऑथेंटिकेशन जोड़ता है—यह मूलतः वेबसाइट पर यूज़रनेम और पासवर्ड टाइप करने जैसा है। 

  2. एक निजी URL एंडपॉइंट परिभाषित किया, जिसे एक्सेस करना है।

  3. GitHub यूज़रनेम के साथ एक वेरिएबल बनाया—गोपनीयता के लिए यूज़रनेम को अनामीकृत किया गया।

  4. प्रमाणीकरण के लिए GitHub का एक पर्सनल एक्सेस टोकन वाले वेरिएबल को परिभाषित किया।  

  5. अपने एंडपॉइंट से डेटा प्राप्त किया और उसे private_url_response वेरिएबल में संग्रहीत किया। 

  6. स्टेटस कोड प्रदर्शित किया।  

HTTP रिक्वेस्ट त्रुटियों को संभालना

ऐसे कई मौक़े आते हैं जब API को भेजे गए अनुरोध अपेक्षा के अनुरूप नहीं चलते। क्लाइंट या सर्वर पक्ष पर कई कारक काम कर सकते हैं। कारण चाहे जो हो, नतीजा वही होता है: अनुरोध असफल हो जाता है। 

REST APIs का उपयोग करते समय, अपने कोड को लचीला बनाना हमेशा एक अच्छा विचार है। हालाँकि, मजबूत कोड लिखने से पहले, आपको समझना होगा कि जब चीज़ें योजना के मुताबिक़ न हों तो रिपोर्ट की गई त्रुटियों को कैसे मैनेज करें।  

इस प्रदर्शन के लिए, चलिए JSONPlaceholder API पर लौटते हैं। हम कुछ कोड लिखकर शुरू करेंगे और फिर बताएँगे कि क्या हो रहा है।  

# A deliberate typo is made in the endpoint "postz" instead of "posts"
url = "https://jsonplaceholder.typicode.com/postz"

# Attempt to GET data from provided endpoint
try:
    response = requests.get(url)
    response.raise_for_status()
# If the request fails (404) then print the error.
except requests.exceptions.HTTPError as error:
  print(error)

"""
404 Client Error: Not Found for url: https://jsonplaceholder.typicode.com/postz
"""

ऊपर दिए गए कोड में: 

  1. हमने JSONPlaceholder एंडपॉइंट परिभाषित किया जिससे डेटा प्राप्त करना था, लेकिन URL बनाते समय जानबूझकर टाइपो किया—इससे 404 त्रुटि उठेगी। 

  2. हमने Python की बिल्ट‑इन एक्सेप्शन हैंडलिंग का उपयोग किया, ताकि JSONPlaceholder एंडपॉइंट पर जाने का प्रयास करते समय होने वाली किसी भी त्रुटि को try और except से पकड़ा जा सके। ध्यान दें, raise_for_status() मेथड वही है जो प्रक्रिया के दौरान त्रुटि होने पर एक HTTPError ऑब्जेक्ट लौटाता है।

  3. और अंत में, उठाई गई त्रुटि को प्रिंट किया। 

हालाँकि हमने इस उदाहरण में 404 त्रुटि स्टेटस कोड को कैसे संभालना है यह दिखाया, वही ढाँचा किसी भी HTTP स्टेटस कोड को संभालने के लिए प्रयोग किया जा सकता है। 

बहुत अधिक रीडायरेक्ट्स से निपटना

3xx फ़ॉर्मेट वाले HTTP स्टेटस कोड इंगित करते हैं कि क्लाइंट को रीडायरेक्ट किया गया और अनुरोध पूरा करने के लिए कुछ अतिरिक्त कार्रवाई करनी होगी। हालाँकि, यह कभी‑कभी अनंत रीडायरेक्ट लूप तक ले जा सकता है।

Python का requests मॉड्यूल इस समस्या को संभालने के लिए TooManyRedirects ऑब्जेक्ट प्रदान करता है, इस प्रकार: 

"""
Note: The code here will not raise an error
but the structure is how you would hand a case where there
are multiple redirects
"""

url = "https://jsonplaceholder.typicode.com/posts"

try:
  response = requests.get(url)
  response.raise_for_status()
except requests.exceptions.TooManyRedirects as error:
  print(error)

आप अपने HTTP रिक्वेस्ट मेथड के पैरामीटर के रूप में अधिकतम रीडायरेक्ट की संख्या भी सेट कर सकते हैं: 

# Solution 2
url = "https://jsonplaceholder.typicode.com/posts"
session = requests.Session()
session.max_redirects = 3
response = session.get(url)

एक अन्य विकल्प है रीडायरेक्ट्स को पूरी तरह अक्षम कर देना: 

# Solution 3
url = "https://jsonplaceholder.typicode.com/posts"
session = requests.Session()
session.allow_redirects = False
response = session.get(url)

HTTP रिक्वेस्ट कनेक्शन त्रुटियों को संभालना

ये अन्य प्रकार की त्रुटियाँ हैं जिनका सामना आपको सर्वर को रिक्वेस्ट भेजने का प्रयास करते समय करना पड़ सकता है। कई कारण हो सकते हैं जिनकी वजह से आपको सर्वर से प्रतिक्रिया न मिले (जैसे, DNS फेल्योर, कनेक्शन रिजेक्टेड, इंटरनेट कनेक्शन समस्याएँ, आदि), लेकिन नतीजा समान है: एक कनेक्शन त्रुटि उठती है। 

आप requests मॉड्यूल के ConnectionError एक्सेप्शन ऑब्जेक्ट का उपयोग कर इन समस्याओं को पकड़ सकते हैं और तदनुसार संभाल सकते हैं। 

कोड इस प्रकार दिखेगा:  

"""
Note: The code here will not raise an error
but the structure is how you would hand a case where there
is a connection error.
"""

url = "https://jsonplaceholder.typicode.com/posts"

try:
  response = requests.get(url)
except requests.ConnectionError as error:
  print(error)

HTTP रिक्वेस्ट टाइमआउट संभालना

जब API सर्वर आपका कनेक्शन स्वीकार तो करता है लेकिन निर्धारित समय के भीतर आपका अनुरोध पूरा नहीं कर पाता, तो आपको “टाइमआउट त्रुटि” मिलती है।

हम requests.get() मेथड में timeout पैरामीटर को अत्यंत छोटा मान देकर इस स्थिति को संभालना दिखाएँगे; इससे त्रुटि उठेगी, और हम उस त्रुटि को requests.Timeout ऑब्जेक्ट का उपयोग कर संभालेंगे। 

url = "https://jsonplaceholder.typicode.com/posts"

try:
  response = requests.get(url, timeout=0.0001)
except requests.Timeout as error:
  print(error)

टाइमआउट त्रुटियों के लिए सबसे सीधा उपाय है लंबे टाइमआउट सेट करना। अन्य समाधान में अपनी रिक्वेस्ट्स का अनुकूलन करना, अपने स्क्रिप्ट्स में रिट्राई लूप शामिल करना, या असिंक्रोनस API कॉल करना—एक तकनीक जो आपके सॉफ़्टवेयर को संभावित रूप से लंबे समय तक चलने वाली गतिविधि शुरू करने देती है, जबकि वह अन्य घटनाओं के प्रति उत्तरदायी बना रहता है, बजाय इसके कि उस कार्य के पूरा होने का इंतज़ार किया जाए।

समापन

इस ट्यूटोरियल में, हमने APIs क्या हैं और REST नामक एक सामान्य API आर्किटेक्चर की चर्चा की। हमने HTTP मेथड्स पर भी नज़र डाली और देखा कि Python की requests लाइब्रेरी का उपयोग कर वेब सेवाओं के साथ कैसे इंटरैक्ट किया जा सकता है। 

अपनी डेटा साइंस कौशल विकसित करने के लिए निम्नलिखित कोर्स देखें: 

FAQs

Python HTTP requests में कस्टम हैडर्स को कैसे संभालें?

आप अपने HTTP रिक्वेस्ट्स में कस्टम हैडर्स जोड़ सकते हैं, इसके लिए हैडर्स की dictionary को रिक्वेस्ट के headers पैरामीटर में पास करें। उदाहरण के लिए:

import requests

url = "https://jsonplaceholder.typicode.com/posts"
headers = {
    "Authorization": "Bearer YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

response = requests.get(url, headers=headers)
print(response.json())
requests मॉड्यूल में सेशन ऑब्जेक्ट का उपयोग करने के क्या लाभ हैं?

requests मॉड्यूल में Session ऑब्जेक्ट का उपयोग कई फायदे देता है, जिनमें शामिल हैं:

  • Persistent Connections: कई रिक्वेस्ट्स में कनेक्शन बनाए रखता है, जिससे प्रदर्शन बेहतर होता है।
  • Session-wide Settings: सेशन के माध्यम से की जाने वाली सभी रिक्वेस्ट्स के लिए हैडर्स, कुकीज़ और पैरामीटर्स एक बार सेट किए जा सकते हैं।
  • Cookie Persistence: कुकीज़ को स्वतः संभालता है और उन्हें रिक्वेस्ट्स के बीच बनाए रखता है।

उदाहरण:

import requests

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

response = session.get("https://jsonplaceholder.typicode.com/posts")
print(response.json())
Python में POST रिक्वेस्ट के साथ फ़ाइल कैसे भेजते हैं?

आप files पैरामीटर में dictionary पास करके POST रिक्वेस्ट के साथ फ़ाइल भेज सकते हैं। उदाहरण के लिए:

import requests

url = "https://example.com/upload"
file_path = "/path/to/your/file.txt"

with open(file_path, 'rb') as file:
    files = {'file': file}
    response = requests.post(url, files=files)

print(response.status_code)
requests मॉड्यूल को प्रॉक्सी के साथ कैसे कॉन्फ़िगर करें?

आप requests मॉड्यूल में प्रॉक्सी कॉन्फ़िगर कर सकते हैं, इसके लिए proxies पैरामीटर को dictionary पास करें। उदाहरण के लिए:

import requests

url = "https://jsonplaceholder.typicode.com/posts"
proxies = {
    "http": "http://10.10.1.10:3128",
    "https": "http://10.10.1.10:1080",
}

response = requests.get(url, proxies=proxies)
print(response.json())
Python requests मॉड्यूल के साथ HTTP रिक्वेस्ट बनाते समय टाइमआउट कैसे संभालें?

आप अपनी रिक्वेस्ट में timeout पैरामीटर निर्दिष्ट करके टाइमआउट संभाल सकते हैं। यह पैरामीटर सेकंड में मान लेता है। उदाहरण के लिए:

import requests

url = "https://jsonplaceholder.typicode.com/posts"

try:
    response = requests.get(url, timeout=5)  # 5 सेकंड बाद टाइमआउट
    print(response.json())
except requests.Timeout:
    print("रिक्वेस्ट का समय समाप्त हो गया")
Kurtis Pykes

लेखक

Kurtis Pykes

विषय