𝗖𝗼𝗻𝘃𝗲𝗿𝘁 𝗖𝗨𝗥𝗟 𝘁𝗼 𝗣𝘆𝘁𝗵𝗼𝗻 𝗥𝗲𝗾𝘂𝗲𝘀𝘁𝘀 𝗦𝘁𝗲𝗽 𝗕𝘆 𝗦𝘁𝗲𝗽
మీరు మీ బ్రౌజర్ DevTools నుండి ఒక రిక్వెస్ట్ను cURL కమాండ్గా కాపీ చేస్తారు.
మీకు హెడర్లు (headers), కుకీలు (cookies) మరియు ఆథ్ టోకెన్లు (auth tokens) లభిస్తాయి.
కానీ, చివరకు మీకు 30 లైన్ల గందరగోళమైన షెల్ కోడ్ మాత్రమే మిగులుతుంది. మీకు కావాల్సింది క్లీన్ Python కోడ్.
cURL కమాండ్ను Python requests లైబ్రరీకి మాన్యువల్గా ఎలా మ్యాప్ చేయాలో ఇక్కడ చూడండి.
Method ని నిర్ణయించండి మీరు
--dataలేదా--data-rawఅని చూస్తే, curl డిఫాల్ట్గా POST ని ఉపయోగిస్తుంది.-Xఫ్లాగ్ లేనంత మాత్రాన అది GET రిక్వెస్ట్ అని అనుకోవద్దు.Headers ని హ్యాండిల్ చేయండి ప్రతి
-Hఫ్లాగ్ ఒక డిక్షనరీలో ఎంట్రీగా మారుతుంది. మీరు హెడర్ స్ట్రింగ్ను స్ప్లిట్ (split) చేసేటప్పుడు, మొదటి కోలన్ (colon) వద్ద మాత్రమే స్ప్లిట్ చేయండి. URLలు లేదా టైమ్స్టాంప్ల వంటి వాల్యూస్లో కూడా కోలన్లు ఉంటాయి. మీరు ప్రతి కోలన్ వద్ద స్ప్లిట్ చేస్తే, డేటా దెబ్బతింటుంది.Cookies ని మేనేజ్ చేయండి
-bఫ్లాగ్ సెమీకోలన్ (semicolon) తో వేరు చేయబడిన స్ట్రింగ్ను అందిస్తుంది. దీనిని మీ హెడర్స్ డిక్షనరీలో పెట్టకండి. దానికి బదులుగా, దీనినిcookiesఆర్గ్యుమెంట్కు ఒక డిక్షనరీగా పంపండి. దీనివల్ల లైబ్రరీ ఎన్కోడింగ్ను సులభంగా హ్యాండిల్ చేయగలదు.JSON vs Data వాడకం ఇది చాలా మంది చేసే సాధారణ తప్పు. కంటెంట్ టైప్
application/jsonఅయితే,json=ఆర్గ్యుమెంట్ను ఉపయోగించండి. ఇది మీ డిక్షనరీని సీరియలైజ్ (serialize) చేస్తుంది మరియు మీ కోసం సరైన హెడర్ను సెట్ చేస్తుంది. ఒకవేళ మీరుdata=ఉపయోగిస్తే, requests ఫామ్-ఎన్కోడింగ్ను (form-encoding) ఉపయోగిస్తుంది. దీనివల్ల API మీ రిక్వెస్ట్ను తిరస్కరించే అవకాశం ఉంది.పారామీటర్లను క్లీన్ చేయండి URLలోని క్వెరీ స్ట్రింగ్ను (query string) ఒక
paramsడిక్షనరీలోకి మార్చండి. ఇది మీ కోడ్ను చదవడానికి సులభంగా చేస్తుంది. డబుల్-ఎన్కోడింగ్ (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())
నివారించాల్సిన సాధారణ తప్పులు:
- multipart uploads చేసేటప్పుడు
files=మరియుdata=లను కలిపి వాడటం. - ప్రతి కోలన్ వద్ద హెడర్లను స్ప్లిట్ చేయడం.
- క్వెరీ పారామీటర్లను డబుల్-ఎన్కోడ్ చేయడం.
Source: https://dev.to/wanfeng/from-browser-curl-to-clean-python-requests-code-step-by-step-25oh