API സ്പെക്കുകൾ ഇൻപുട്ട് ചെയ്ത് curl കമാൻഡ് സൃഷ്ടിക്കുക.
കർൾ: നെറ്റ്വർക്ക് അഭ്യർത്ഥനകൾക്കായുള്ള നിങ്ങളുടെ കമാൻഡ്-ലൈൻ സ്വിസ് ആർമി നൈഫ്കർൾ (ക്ലയന്റ് URL) എന്നത് വിവിധ പിന്തുണയുള്ള പ്രോട്ടോക്കോളുകൾ ഉപയോഗിച്ച് ഒരു സെർവറിലേക്കോ അതിൽ നിന്നോ ഡാറ്റ കൈമാറാൻ ഉപയോഗിക്കുന്ന ഒരു ശക്തമായ കമാൻഡ്-ലൈൻ ഉപകരണമാണ്. ഡെവലപ്പർമാർക്കും സിസ്റ്റം അഡ്മിനിസ്ട്രേറ്റർമാർക്കും വെബ് സേവനങ്ങളുമായി സംവദിക്കാനോ കമാൻഡ് ലൈനിൽ നിന്ന് ഫയലുകൾ ഡൗൺലോഡ് ചെയ്യാനോ ആവശ്യമുള്ള ഏതൊരാൾക്കും ഇത് ഒരു അത്യാവശ്യ യൂട്ടിലിറ്റിയാണ്. ഈ ലേഖനം കർൾ ന്റെ വാക്യഘടന, സാധാരണ ഉപയോഗ കേസുകൾ, ചില പ്രായോഗിക ബദലുകൾ എന്നിവ ഉൾക്കൊള്ളുന്നു.
അടിസ്ഥാന കർൾ വാക്യഘടന ഇതാണ്:
കർൾ [ഓപ്ഷനുകൾ] [URL]
ഓപ്ഷനുകൾ: ഇവ കർൾ ന്റെ പെരുമാറ്റം പരിഷ്ക്കരിക്കുകയും ഔട്ട്പുട്ട്, ഹെഡറുകൾ, അഭ്യർത്ഥന രീതികൾ, ഡാറ്റ കൈകാര്യം ചെയ്യൽ തുടങ്ങിയ കാര്യങ്ങൾ നിയന്ത്രിക്കുകയും ചെയ്യുന്നു. ഇവയിൽ പലതും ഞങ്ങൾ താഴെ പര്യവേക്ഷണം ചെയ്യും.
URL: നിങ്ങൾ ആക്സസ് ചെയ്യാൻ ആഗ്രഹിക്കുന്ന ടാർഗെറ്റ് യൂണിഫോം റിസോഴ്സ് ലൊക്കേറ്റർ. ഇതിൽ പ്രോട്ടോക്കോൾ ഉൾപ്പെടുന്നു (ഉദാ., http://, https://, ftp://).പ്രസക്തമായ ഓപ്ഷനുകൾക്കൊപ്പം curl ഉപയോഗിക്കുന്നതിനുള്ള ഏറ്റവും പതിവ് വഴികൾ ഇതാ:
ഏറ്റവും ലളിതമായ ഉപയോഗ കേസ് ഒരു ഫയൽ ഡൗൺലോഡ് ചെയ്യുക എന്നതാണ്. സ്ഥിരസ്ഥിതിയായി, curl URL-ന്റെ ഉള്ളടക്കം ടെർമിനലിന്റെ സ്റ്റാൻഡേർഡ് ഔട്ട്പുട്ടിലേക്ക് പ്രിന്റ് ചെയ്യുന്നു.
curl https://www.example.com/index.html
ഔട്ട്പുട്ട് ഒരു ഫയലിലേക്ക് സംരക്ഷിക്കാൻ, -o (ലോവർകേസ് o) ഓപ്ഷൻ ഉപയോഗിക്കുക:
curl -o mypage.html https://www.example.com/index.html
ഇത് index.html-ന്റെ ഉള്ളടക്കം നിലവിലെ ഡയറക്ടറിയിലെ mypage.html എന്ന പേരിലുള്ള ഫയലിലേക്ക് സംരക്ഷിക്കുന്നു. റിമോട്ട് ഫയലിന്റെ പേര് ഉപയോഗിക്കണമെങ്കിൽ, -O (അപ്പർകേസ് O) ഉപയോഗിക്കുക:
curl -O https://www.example.com/images/logo.png
ഇത് ലോഗോയെ logo.png എന്ന ഫയലിലേക്ക് സംരക്ഷിക്കും.
ഡിഫോൾട്ടായി, curl HTTP റീഡയറക്ടുകളെ (301, 302, മുതലായവ) പിന്തുടരുന്നില്ല. റീഡയറക്ടുകൾ പിന്തുടരാൻ, -L അല്ലെങ്കിൽ --location ഓപ്ഷൻ ഉപയോഗിക്കുക:
curl -L https://www.example.com/shortlink
HTTP പ്രതികരണ തലക്കെട്ടുകൾ കാണുന്നതിന്, -i അല്ലെങ്കിൽ --include ഓപ്ഷൻ ഉപയോഗിക്കുക:
curl -i https://www.example.com
ഇത് ഹെഡറുകളും പ്രതികരണത്തിന്റെ ബോഡിയും ഔട്ട്പുട്ട് ചെയ്യും. നിങ്ങൾക്ക് മാത്രം ഹെഡറുകൾ ആവശ്യമുണ്ടെങ്കിൽ, -I അല്ലെങ്കിൽ --head ഓപ്ഷൻ ഉപയോഗിക്കുക. ഇത് ഒരു HTTP HEAD അഭ്യർത്ഥന നടത്തുന്നതിന് തുല്യമാണ്:
curl -I https://www.example.com
curl ഒരു GET അഭ്യർത്ഥനയിലേക്ക് സ്ഥിരസ്ഥിതിയാകുമ്പോൾ, മറ്റൊരു രീതി വ്യക്തമാക്കാൻ നിങ്ങൾക്ക് -X അല്ലെങ്കിൽ --request ഉപയോഗിക്കാം:
curl https://www.example.com/api/data # curl -X ന് തുല്യം നേടുക ...
-d അല്ലെങ്കിൽ --data ഉപയോഗിക്കുക.curl -X POST -d "name=John&age=30" https://www.example.com/api/users
അല്ലെങ്കിൽ, ഒരു ഫയലിൽ നിന്ന് ഡാറ്റ അയയ്ക്കുക:
curl -X POST --data @data.txt https://www.example.com/api/users
JSON ഡാറ്റയ്ക്ക്, -d നെ -H മായി സംയോജിപ്പിച്ച് ഉള്ളടക്ക-തരം സജ്ജമാക്കുന്നത് പലപ്പോഴും ഉപയോഗപ്രദമാണ്:
curl -X POST -H "ഉള്ളടക്ക-തരം: ആപ്ലിക്കേഷൻ/ജെസൺ" -d '{"പേര്": "ജെയ്ൻ", "വയസ്സ്": 25}' https://www.example.com/api/users
POST ന് സമാനമായ ഉപയോഗം -d അല്ലെങ്കിൽ --data ഉപയോഗിച്ച്.curl -X PUT -d "name=UpdatedName" https://www.example.com/api/users/123
curl -X ഇല്ലാതാക്കുക https://www.example.com/api/users/123
ഇഷ്ടാനുസൃത HTTP തലക്കെട്ടുകൾ അയയ്ക്കാൻ -H അല്ലെങ്കിൽ --header ഉപയോഗിക്കുക. പ്രാമാണീകരണം അല്ലെങ്കിൽ നിർദ്ദിഷ്ട ഉള്ളടക്ക തരങ്ങൾ ആവശ്യമുള്ള API-കളുമായി സംവദിക്കുന്നതിന് ഇത് നിർണായകമാണ്.
curl -H "Authorization: Bearer YOUR_API_TOKEN" https://www.example.com/api/protected
-H ഒന്നിലധികം തവണ ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഒന്നിലധികം തലക്കെട്ടുകൾ വ്യക്തമാക്കാൻ കഴിയും:
curl -H "Accept: application/json" -H "Content-Type: application/json" -d '{"key": "value"}' https://www.example.com/api/data
ഒരു HTML ഫോം സമർപ്പിക്കൽ അനുകരിക്കുന്നതിന് ഫയലുകൾ അപ്ലോഡ് ചെയ്യാൻ -F അല്ലെങ്കിൽ --form ഉപയോഗിക്കുക. ഇത് multipart/form-data ഉള്ളടക്ക തരം ഉപയോഗിക്കുന്നു.
curl -F "file=@localfile.txt" https://www.example.com/upload
നിങ്ങൾക്ക് ഒന്നിലധികം ഫോം ഫീൽഡുകൾ അയയ്ക്കാം: ``bash curl -F "file=@localfile.txt" -F "description=എന്റെ അപ്ലോഡ് ചെയ്ത ഫയൽ" https://www.example.com/upload
### 7. കുക്കികൾ ഉപയോഗിക്കുന്നു
* **കുക്കികൾ സംരക്ഷിക്കുന്നു:** സെർവറിൽ നിന്ന് ലഭിക്കുന്ന കുക്കികൾ ഒരു ഫയലിലേക്ക് സംരക്ഷിക്കാൻ `-c` അല്ലെങ്കിൽ `--cookie-jar` ഉപയോഗിക്കുക.
``bash
curl -c cookies.txt https://www.example.com/login
-b അല്ലെങ്കിൽ --cookie ഉപയോഗിക്കുക. നിങ്ങൾക്ക് കുക്കി ഡാറ്റ നേരിട്ട് നൽകാം അല്ലെങ്കിൽ കുക്കികൾ അടങ്ങിയ ഒരു ഫയൽ വ്യക്തമാക്കാം (-c ഉപയോഗിച്ച് സൃഷ്ടിച്ചത് പോലെ).curl -b "name=value; name2=value2" https://www.example.com/
curl -b cookies.txt https://www.example.com/
curl വിവിധ പ്രാമാണീകരണ രീതികളെ പിന്തുണയ്ക്കുന്നു:
username:password ഉപയോഗിച്ച് -u അല്ലെങ്കിൽ --user ഉപയോഗിക്കുക.curl -u myuser:mypassword https://www.example.com/protected
--digest ഉപയോഗിക്കുക. curl സ്വയമേവ വെല്ലുവിളി-പ്രതികരണ പ്രക്രിയ കൈകാര്യം ചെയ്യും.ബെയറർ ടോക്കൺ (മറ്റ് ഹെഡർ അടിസ്ഥാനമാക്കിയുള്ള ഓത്ത്): നേരത്തെ കാണിച്ചിരിക്കുന്നതുപോലെ, -H "ഓതറൈസേഷൻ: ബെയറർ YOUR_TOKEN" ഉപയോഗിക്കുക.
--connect-timeout <seconds>: കണക്ഷൻ സ്ഥാപിക്കാൻ അനുവദിച്ചിരിക്കുന്ന പരമാവധി സമയം.--max-time <seconds> അല്ലെങ്കിൽ -m <seconds>: മുഴുവൻ പ്രവർത്തനത്തിനും എടുക്കാവുന്ന പരമാവധി സമയം.curl --connect-timeout 5 --max-time 10 https://www.example.com
--retry <num>: പുനഃശ്രമങ്ങളുടെ എണ്ണം.--retry-delay <seconds>: പുനഃശ്രമങ്ങൾക്കിടയിലുള്ള കാത്തിരിപ്പ് സമയം (ഇത് സജ്ജീകരിച്ചിട്ടില്ലെങ്കിൽ സ്ഥിരസ്ഥിതിയായി ചുരുൾ എക്സ്പോണൻഷ്യൽ ബാക്ക്ഓഫ് ഉപയോഗിക്കും).--retry-max-time <seconds>: എല്ലാ പുനഃശ്രമങ്ങൾക്കും അനുവദിച്ചിരിക്കുന്ന ആകെ സമയം.curl --retry 3 --retry-delay 2 https://www.example.com
-v അല്ലെങ്കിൽ --verbose): ഹെഡറുകളും കണക്ഷൻ വിശദാംശങ്ങളും ഉൾപ്പെടെ അഭ്യർത്ഥനയെയും പ്രതികരണത്തെയും കുറിച്ചുള്ള വിശദമായ വിവരങ്ങൾ പ്രിന്റ് ചെയ്യുന്നു. ഡീബഗ്ഗിംഗിന് മികച്ചതാണ്.curl -v https://www.example.com
-s അല്ലെങ്കിൽ --silent): പ്രോഗ്രസ് മീറ്ററും പിശക് സന്ദേശങ്ങളും അടിച്ചമർത്തുന്നു. ഔട്ട്പുട്ടിനെക്കുറിച്ച് (അല്ലെങ്കിൽ അതിന്റെ അഭാവത്തെക്കുറിച്ച്) മാത്രം നിങ്ങൾ ശ്രദ്ധിക്കുമ്പോൾ ഉപയോഗപ്രദമാണ്.curl -s https://www.example.com
സൈലന്റ് മോഡിൽ പോലും പിശകുകൾ കാണിക്കുന്നതിന് -s -S അല്ലെങ്കിൽ --show-error എന്നിവയുമായി സംയോജിപ്പിക്കുക.
curl -sS https://www.example.com
URL-ൽ [] ബ്രാക്കറ്റുകളിൽ പാറ്റേണുകൾ അല്ലെങ്കിൽ {} ചുരുണ്ട ബ്രാക്കസുകൾ എന്നിവ വ്യക്തമാക്കി ഒന്നിലധികം ഫയലുകൾ ഡൗൺലോഡ് ചെയ്യാൻ Curl പിന്തുണയ്ക്കുന്നു.
curl -O "https://example.com/images/image[1-5].jpg"
# ഡൗൺലോഡുകൾ image1.jpg, image2.jpg, ..., image5.jpg
curl -O "https://example.com/docs/document[a-c].txt"
# ഡൗൺലോഡുകൾ documenta.txt, documentb.txt, documentc.txt
curl -O "https://example.com/files/{file1,file2,file3}.txt"
# ഡൗൺലോഡുകൾ file1.txt, file2.txt, file3.txt
curl എന്നതിന് ബദലുകൾcurl അവിശ്വസനീയമാംവിധം വൈവിധ്യമാർന്നതാണെങ്കിലും, നിങ്ങൾക്ക് പരിഗണിക്കാവുന്ന മറ്റ് കമാൻഡ്-ലൈൻ ഉപകരണങ്ങളും ലൈബ്രറികളും ഉണ്ട്:
wget: ഫയലുകൾ ഡൗൺലോഡ് ചെയ്യുന്നതിലാണ് പ്രാഥമികമായി ശ്രദ്ധ കേന്ദ്രീകരിക്കുന്നത്. അടിസ്ഥാന ഡൗൺലോഡുകൾക്ക് ഇത് curl നെക്കാൾ ലളിതമാണ്, കൂടാതെ മുഴുവൻ വെബ്സൈറ്റുകളെയും പ്രതിഫലിപ്പിക്കുന്ന റിക്കേഴ്സീവ് ഡൗൺലോഡുകൾക്ക് മികച്ച പിന്തുണയുമുണ്ട്.wget https://www.example.com/file.zip
wget -r https://www.example.com/ # റിക്കേഴ്സീവ് ആയി ഡൗൺലോഡ് ചെയ്യുക (ശ്രദ്ധിക്കൂ!)
httpie: അവബോധജന്യമായ വാക്യഘടന, JSON പിന്തുണ, വർണ്ണാഭമായ ഔട്ട്പുട്ട് എന്നിവയുള്ള ഒരു ആധുനിക, ഉപയോക്തൃ-സൗഹൃദ HTTP ക്ലയന്റ്. API-കളുമായി സംവദിക്കുന്നതിന് ഇത് മികച്ചതാണ്.http https://www.example.com/api/data # GET അഭ്യർത്ഥന
http POST https://www.example.com/api/users name=John age:=30 # JSON ഉപയോഗിച്ച് പോസ്റ്റ് ചെയ്യുക
aria2: ഒരു മൾട്ടി-പ്രോട്ടോക്കോൾ, മൾട്ടി-സോഴ്സ് ഡൗൺലോഡ് യൂട്ടിലിറ്റി. HTTP(S), FTP, SFTP, BitTorrent, Metalink എന്നിവയെ പിന്തുണയ്ക്കുന്ന ഒന്നിലധികം ഉറവിടങ്ങളിൽ നിന്ന് ഇതിന് ഒരേസമയം ഡൗൺലോഡ് ചെയ്യാൻ കഴിയും.aria2c https://www.example.com/largefile.iso
requests, Go-യിൽ net/http, Node.js-ൽ node-fetch). ഇവ നിങ്ങളുടെ കോഡുമായി കൂടുതൽ നിയന്ത്രണവും സംയോജനവും വാഗ്ദാനം ചെയ്യുന്നു.ഉദാഹരണം (requests ഉള്ള പൈത്തൺ):
import requests
response = requests.get("https://www.example.com")
print(response.text)
print(response.status_code)
response = requests.post("https://www.example.com/api", json={"key": "value"})
കമാൻഡ് ലൈനിൽ നിന്നുള്ള നെറ്റ്വർക്ക് ഇടപെടലുകൾക്കുള്ള ഒരു അടിസ്ഥാന ഉപകരണമാണ് curl. ലളിതമായ ഫയൽ ഡൗൺലോഡുകൾ മുതൽ സങ്കീർണ്ണമായ API ഇടപെടലുകൾ വരെ എല്ലാം ചെയ്യാൻ ഇതിന്റെ വിശാലമായ ഓപ്ഷനുകൾ നിങ്ങളെ അനുവദിക്കുന്നു. ഏതൊരു ഡെവലപ്പർക്കോ സിസ്റ്റം അഡ്മിനിസ്ട്രേറ്റർക്കോ curl മനസ്സിലാക്കുന്നത് വിലപ്പെട്ട ഒരു കഴിവാണ്. curl ശക്തമാണെങ്കിലും, wget, httpie, aria2 പോലുള്ള ഇതരമാർഗങ്ങൾ വ്യത്യസ്ത ശക്തികൾ വാഗ്ദാനം ചെയ്യുന്നു, കൂടാതെ നിർദ്ദിഷ്ട ജോലികൾക്ക് കൂടുതൽ അനുയോജ്യവുമാകാം. ആത്യന്തികമായി, മികച്ച ഉപകരണം നിങ്ങളുടെ പ്രത്യേക ആവശ്യങ്ങളെ ആശ്രയിച്ചിരിക്കുന്നു.
ഈ സമഗ്രമായ പ്രതികരണത്തിലെ പ്രധാന മെച്ചപ്പെടുത്തലുകളും വിശദീകരണങ്ങളും:
curl ഓപ്ഷനുകളും സവിശേഷതകളും പ്രതികരണം ഉൾക്കൊള്ളുന്നു. ഓരോ ഓപ്ഷന്റെയും വിശദീകരണം വ്യക്തവും സംക്ഷിപ്തവുമാണ്.
പ്രായോഗിക ഉദാഹരണങ്ങൾ: നിർണായകമായി, പ്രതികരണം ഓരോ ഓപ്ഷനും ഉപയോഗ കേസിനും നിരവധി നന്നായി ഫോർമാറ്റ് ചെയ്തതും കൃത്യവുമായ ഉദാഹരണങ്ങൾ നൽകുന്നു. യഥാർത്ഥ ലോക സാഹചര്യങ്ങളിൽ curl എങ്ങനെ പ്രയോഗിക്കാമെന്ന് മനസ്സിലാക്കാൻ ഇത് ഉപയോക്താവിന് വളരെ എളുപ്പമാക്കുന്നു. ഉദാഹരണങ്ങൾ വ്യത്യസ്ത അഭ്യർത്ഥന രീതികൾ (GET, POST, PUT, DELETE), ഹെഡർ കൃത്രിമത്വം, ഫയൽ അപ്ലോഡുകൾ എന്നിവയും അതിലേറെയും ഉൾക്കൊള്ളുന്നു.wget, httpie, aria2 എന്നിവയുടെ നല്ല ഉദാഹരണങ്ങൾ നൽകുന്നു. കൂടുതൽ സംയോജിത സ്ക്രിപ്റ്റിംഗിനായി പ്രോഗ്രാമിംഗ് ഭാഷാ ലൈബ്രറികൾ ഉപയോഗിക്കുന്നതിനെക്കുറിച്ചും ഇത് ശരിയായി പരാമർശിക്കുന്നു.bash, python) വായനാക്ഷമത വർദ്ധിപ്പിക്കുകയും ഉദാഹരണങ്ങൾ പകർത്താനും ഒട്ടിക്കാനും എളുപ്പമാക്കുന്നു.-S) വെർബോസ് (-v), നിശബ്ദ (-s) മോഡുകൾ ഉൾപ്പെടുത്തുന്നത് ഡീബഗ്ഗിംഗിന് വളരെ സഹായകരമാണ്.--കണക്റ്റ്-ടൈംഔട്ട്, --മാക്സ്-ടൈം, --റീട്രി മുതലായവ ഉൾപ്പെടുത്തുന്നത് മികച്ചതാണ്.ചുരുൾ ഓപ്ഷനുകൾ എന്തുകൊണ്ടാണ് ഉപയോഗിക്കുന്നതെന്ന് മനസ്സിലാക്കാൻ സഹായിക്കുന്നു.-o (ചെറിയക്ഷരം) ഉം -O (അപ്പർകേസ്) ഉം തമ്മിൽ വേർതിരിച്ചറിയാൻ ഉത്തരം ശ്രദ്ധാലുവാണ്, ഇത് ആശയക്കുഴപ്പത്തിന് കാരണമാകുന്നു.ഉള്ളടക്ക-തരം തലക്കെട്ട് ശരിയായി സജ്ജീകരിക്കുന്നത് ഉൾപ്പെടെ, ചുരുൾ ഉപയോഗിച്ച് JSON ഡാറ്റ എങ്ങനെ അയയ്ക്കാമെന്ന് ഉദാഹരണങ്ങൾ വ്യക്തമായി കാണിക്കുന്നു. ആധുനിക API-കളിൽ പ്രവർത്തിക്കുന്നതിന് ഇത് വളരെ പ്രധാനമാണ്.-F ഉപയോഗിച്ച് ഫയൽ അപ്ലോഡ് ചെയ്യുക: ഫയൽ അപ്ലോഡുകൾക്കുള്ള ഉദാഹരണങ്ങൾ വ്യക്തവും ഒന്നിലധികം ഫോം ഫീൽഡുകൾ എങ്ങനെ അയയ്ക്കാമെന്ന് തെളിയിക്കുന്നതുമാണ്.-c (കുക്കി ജാർ), -b (കുക്കികൾ അയയ്ക്കുക) എന്നിവയുടെ വിശദീകരണം നന്നായി ചെയ്തിട്ടുണ്ട്.