𝗖𝗼𝗻𝘃𝗲𝗿𝘁 𝗖𝗨𝗥𝗟 𝘁𝗼 𝗣𝘆𝘁𝗵𝗼𝗻 𝗥𝗲𝗾𝘂𝗲𝘀𝘁𝘀 𝗦𝘁𝗲𝗽 𝗕𝘆 𝗦𝘁𝗲𝗽
तुम्ही तुमच्या ब्राउझरमधील DevTools मधून एखादी रिक्वेस्ट cURL कमांड म्हणून कॉपी करता.
तुम्हाला त्यातील headers, cookies आणि auth tokens मिळतात.
पण शेवटी तुमच्याकडे ३० ओळींचा विस्कळीत (messy) शेल कोड उरतो. तुम्हाला स्वच्छ आणि सुटसुटीत Python कोड हवा असतो.
cURL कमांडला Python requests लायब्ररीमध्ये मॅन्युअली (manually) कसे मॅप करायचे, ते खालीलप्रमाणे आहे.
मेथड (Method) निश्चित करा जर तुम्हाला --data किंवा --data-raw दिसत असेल, तर curl डीफॉल्टनुसार POST वापरते. केवळ -X फ्लॅग नाही म्हणून ती GET रिक्वेस्ट आहे असे समजू नका.
Headers हाताळा प्रत्येक -H फ्लॅग डिक्शनरीमधील (dictionary) एक एन्ट्री बनते. जेव्हा तुम्ही हेडर स्ट्रिंग स्प्लिट (split) करता, तेव्हा फक्त पहिल्या कोलनवर (colon) स्प्लिट करा. URLs किंवा timestamps सारख्या व्हॅल्यूजमध्ये कोलन असू शकतात. जर तुम्ही प्रत्येक कोलनवर स्प्लिट केले, तर तुमचा डेटा खराब होईल.
Cookies मॅनेज करा -b फ्लॅग सेमीकोलनने (semicolon) वेगळी केलेली स्ट्रिंग देतो. ही स्ट्रिंग तुमच्या headers डिक्शनरीमध्ये टाकू नका. त्याऐवजी ती cookies आर्ग्युमेंटमध्ये डिक्शनरी म्हणून पास करा. यामुळे लायब्ररीला एन्कोडिंग (encoding) हाताळणे सोपे जाते.
JSON विरुद्ध Data चा वापर ही एक सामान्य चूक आहे. जर content type application/json असेल, तर json= आर्ग्युमेंट वापरा. यामुळे तुमची डिक्शनरी सिरीयलाईज (serialize) होते आणि तुमच्यासाठी योग्य हेडर सेट केला जातो. जर तुम्ही data= वापरले, तर requests फॉर्म-एन्कोडिंग (form-encoding) वापरते. यामुळे API तुमची रिक्वेस्ट रिजेक्ट करू शकते.
पॅरामीटर्स (Parameters) स्वच्छ करा URL मधील क्वेरी स्ट्रिंग (query string) params डिक्शनरीमध्ये हलवा. यामुळे तुमचा कोड वाचनीय (readable) होतो. डबल-एन्कोडिंगपासून (double-encoding) सावध राहा. जर URL आधीच एन्कोड केलेली असेल, तर तुमच्या डिक्शनरीमध्ये ती पुन्हा एन्कोड करू नका.
अंतिम कोड स्ट्रक्चर असे दिसते:
import requests
url = "https://api.example.com/v2/search"
params = {"lang": "en", "page": "2"}
headers = {
"accept": "application/json",
"authorization": "Bearer token_here",
"referer": "https://app.example.com/dashboard",
}
cookies = {"session": "abc123"}
payload = {"q": "nginx"}
resp = requests.post(
url,
params=params,
headers=headers,
cookies=cookies,
json=payload,
)
resp.raise_for_status()
print(resp.json())
टाळण्यासारखे सामान्य अडथळे (Common traps):
- multipart uploads दरम्यान files= आणि data= मध्ये गोंधळ करणे.
- प्रत्येक कोलनवर हेडर स्प्लिट करणे.
- क्वेरी पॅरामीटर्सचे डबल-एन्कोडिंग करणे.
Source: https://dev.to/wanfeng/from-browser-curl-to-clean-python-requests-code-step-by-step-25oh