மாஸ்டரிங் curl: நெட்வொர்க் கோரிக்கைகளுக்கான உங்கள் கட்டளை-வரி சுவிஸ் இராணுவ கத்தி
curl (கிளையன்ட் URL) என்பது பல்வேறு ஆதரிக்கப்படும் நெறிமுறைகளைப் பயன்படுத்தி ஒரு சேவையகத்திற்கு அல்லது சேவையகத்திலிருந்து தரவை மாற்றப் பயன்படும் ஒரு சக்திவாய்ந்த கட்டளை-வரி கருவியாகும். டெவலப்பர்கள், கணினி நிர்வாகிகள் மற்றும் வலை சேவைகளுடன் தொடர்பு கொள்ள அல்லது கட்டளை வரியிலிருந்து கோப்புகளைப் பதிவிறக்க வேண்டிய எவருக்கும் இது ஒரு அத்தியாவசிய பயன்பாடாகும். இந்தக் கட்டுரை curl இன் தொடரியல், பொதுவான பயன்பாட்டு வழக்குகள் மற்றும் சில சாத்தியமான மாற்றுகளை உள்ளடக்கியது.
அடிப்படை தொடரியல்
அடிப்படை curl தொடரியல்:
``bash curl [options] [URL]
* **`options`**: இவை `curl` இன் நடத்தையை மாற்றியமைக்கின்றன, வெளியீடு, தலைப்புகள், கோரிக்கை முறைகள் மற்றும் தரவு கையாளுதல் போன்றவற்றைக் கட்டுப்படுத்துகின்றன. இவற்றில் பலவற்றை கீழே ஆராய்வோம்.
**`URL`**: நீங்கள் அணுக விரும்பும் இலக்கு சீரான வள இருப்பிடம். இதில் நெறிமுறையும் அடங்கும் (எ.கா., `http://`, `https://`, `ftp://`).
## பொதுவான பயன்பாட்டு வழக்குகள் மற்றும் விருப்பங்கள்
தொடர்புடைய விருப்பங்களுடன் சேர்த்து `curl` ஐப் பயன்படுத்துவதற்கான சில பொதுவான வழிகள் இங்கே:
### 1. ஒரு கோப்பைப் பதிவிறக்குதல்
எளிமையான பயன்பாட்டு வழக்கு ஒரு கோப்பைப் பதிவிறக்குவது. முன்னிருப்பாக, `curl` URL இன் உள்ளடக்கத்தை முனையத்தின் நிலையான வெளியீட்டில் அச்சிடுகிறது.
```bash
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 என்ற கோப்பில் சேமிக்கும்.
2. வழிமாற்றுகளைப் பின்தொடர்கிறது
இயல்புநிலையாக, curl HTTP வழிமாற்றுகளைப் பின்தொடராது (301, 302, முதலியன). வழிமாற்றுகளைப் பின்தொடர, -L அல்லது --location விருப்பத்தைப் பயன்படுத்தவும்:
``bash curl -L https://www.example.com/shortlink
### 3. பதில் தலைப்புகளைப் பார்ப்பது
HTTP பதில் தலைப்புகளைப் பார்க்க, `-i` அல்லது `--include` விருப்பத்தைப் பயன்படுத்தவும்:
```bash
curl -i https://www.example.com
இது தலைப்புகள் மற்றும் பதிலின் உடல் இரண்டையும் வெளியிடும். தலைப்புகள் மட்டும் உங்களுக்குத் தேவைப்பட்டால், -I அல்லது --head விருப்பத்தைப் பயன்படுத்தவும். இது HTTP HEAD கோரிக்கையைச் செய்வதற்குச் சமம்:
``bash curl -I https://www.example.com
### 4. வெவ்வேறு HTTP கோரிக்கைகளைச் செய்தல் (GET, POST, PUT, DELETE)
`curl` இயல்புநிலையாக `GET` கோரிக்கையாக இருக்கும்போது, வேறு முறையைக் குறிப்பிட `-X` அல்லது `--request` ஐப் பயன்படுத்தலாம்:
* **GET (இயல்புநிலை):** தரவை மீட்டெடுக்கிறது.
```bash
curl https://www.example.com/api/data # curl -X க்கு சமம் GET ...
- POST: ஒரு வளத்தை உருவாக்க அல்லது புதுப்பிக்க சேவையகத்திற்கு தரவை அனுப்புகிறது. அனுப்ப வேண்டிய தரவைக் குறிப்பிட
-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 உடன் இணைத்து Content-Type ஐ அமைக்க பெரும்பாலும் பயனுள்ளதாக இருக்கும்:
curl -X POST -H "Content-Type: application/json" -d '{"name": "Jane", "age": 25}' https://www.example.com/api/users
- PUT: ஒரு வளத்தை முழுவதுமாக மாற்றுகிறது.
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
5. தனிப்பயன் தலைப்புகளை அனுப்புதல்
தனிப்பயன் HTTP தலைப்புகளை அனுப்ப -H அல்லது --header ஐப் பயன்படுத்தவும். அங்கீகாரம் அல்லது குறிப்பிட்ட உள்ளடக்க வகைகள் தேவைப்படும் APIகளுடன் தொடர்புகொள்வதற்கு இது மிகவும் முக்கியமானது.
``bash curl -H "அங்கீகாரம்: தாங்கி YOUR_API_TOKEN" https://www.example.com/api/protected
நீங்கள் `-H` ஐ பல முறை பயன்படுத்தி பல தலைப்புகளைக் குறிப்பிடலாம்:
``bash
curl -H "ஏற்றுக்கொள்: பயன்பாடு/json" -H "உள்ளடக்க வகை: பயன்பாடு/json" -d '{"key": "value"}' https://www.example.com/api/data
6. கோப்புகளைப் பதிவேற்றுதல்
கோப்புகளைப் பதிவேற்ற -F அல்லது --form ஐப் பயன்படுத்தவும், HTML படிவ சமர்ப்பிப்பை உருவகப்படுத்துகிறது. இது 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/
8. அங்கீகாரம்
curl பல்வேறு அங்கீகார முறைகளை ஆதரிக்கிறது:
- அடிப்படை அங்கீகாரம்:
-uஅல்லது--userஐusername:passwordஉடன் பயன்படுத்தவும்.
curl -u myuser:mypassword https://www.example.com/protected
- Digest அங்கீகாரம்:
--digestஐப் பயன்படுத்தவும்.curlதானாகவே சவால்-பதில் செயல்முறையைக் கையாளும்.
Bearer டோக்கன் (மற்றும் பிற தலைப்பு அடிப்படையிலான அங்கீகாரம்): முன்பு காட்டப்பட்டுள்ளபடி, -H "Authorization: Bearer YOUR_TOKEN" ஐப் பயன்படுத்தவும்.
9. காலக்கெடு மற்றும் மறு முயற்சிகள்
- காலக்கெடு: கோரிக்கையில் கர்ல் செலவிடும் நேரத்தை வரம்பிடவும்.
--connect-timeout <seconds>: இணைப்பை நிறுவ அனுமதிக்கப்படும் அதிகபட்ச நேரம்.--max-time <seconds>அல்லது-m <seconds>: முழு செயல்பாடும் எடுக்க அனுமதிக்கப்படும் அதிகபட்ச நேரம். ``bash curl --connect-timeout 5 --max-time 10 https://www.example.com
* **மீண்டும் முயற்சிக்கிறது:** அது தோல்வியுற்றால் கோரிக்கையை பல முறை முயற்சிக்கவும்.
* `--retry <num>`: மறு முயற்சிகளின் எண்ணிக்கை.
* `--retry-delay <seconds>`: மறு முயற்சிகளுக்கு இடையில் காத்திருப்பு நேரம் (இது அமைக்கப்படவில்லை என்றால் சுருட்டை முன்னிருப்பாக அதிவேக பின்வாங்கலைப் பயன்படுத்தும்).
* `--retry-max-time <seconds>`: அனைத்து மறு முயற்சிகளுக்கும் அனுமதிக்கப்படும் மொத்த நேரம்.
```bash
curl --retry 3 --retry-delay 2 https://www.example.com
10. வெர்போஸ் மற்றும் சைலண்ட் பயன்முறைகள்
- வெர்போஸ் பயன்முறை (
-vஅல்லது--verbose): தலைப்புகள் மற்றும் இணைப்பு விவரங்கள் உட்பட கோரிக்கை மற்றும் பதில் பற்றிய விரிவான தகவல்களை அச்சிடுகிறது. பிழைத்திருத்தத்திற்கு சிறந்தது.
curl -v https://www.example.com
- சைலண்ட் பயன்முறை (
-sஅல்லது--silent): முன்னேற்ற மீட்டர் மற்றும் பிழை செய்திகளை அடக்குகிறது. வெளியீடு (அல்லது அதன் பற்றாக்குறை) பற்றி மட்டுமே நீங்கள் கவலைப்படும்போது பயனுள்ளதாக இருக்கும். ``bash curl -s https://www.example.com
அமைதியான பயன்முறையில் கூட பிழைகளைக் காட்ட `-s` ஐ `-S` அல்லது `--show-error` உடன் இணைக்கவும்.
```bash
curl -sS https://www.example.com
11. வடிவங்களுடன் பல கோப்புகளைப் பதிவிறக்குதல்.
URL இல் [] அடைப்புக்குறிக்குள் அல்லது சுருள் அடைப்புக்குறிகள் {} க்குள் வடிவங்களைக் குறிப்பிடுவதன் மூலம் பல கோப்புகளைப் பதிவிறக்குவதை Curl ஆதரிக்கிறது.
- எண் வரிசைமுறைகள்: ``bash curl -O "https://example.com/images/image[1-5].jpg"
பதிவிறக்கங்கள் image1.jpg, image2.jpg, ..., image5.jpg
* **அகரவரிசை வரிசைமுறைகள்:**
``bash
curl -O "https://example.com/docs/document[a-c].txt"
# பதிவிறக்கங்கள் documenta.txt, documentb.txt, documentc.txt
- பட்டியல்கள்: ``bash curl -O "https://example.com/files/{file1,file2,file3}.txt"
பதிவிறக்கங்கள் file1.txt, file2.txt, file3.txt
## `curl` க்கு மாற்றுகள்
`curl` நம்பமுடியாத அளவிற்கு பல்துறை திறன் கொண்டதாக இருந்தாலும், நீங்கள் கருத்தில் கொள்ளக்கூடிய பிற கட்டளை வரி கருவிகள் மற்றும் நூலகங்கள் உள்ளன:
1. **`wget`:** முதன்மையாக கோப்புகளைப் பதிவிறக்குவதில் கவனம் செலுத்துகிறது. அடிப்படை பதிவிறக்கங்களுக்கு இது `curl` ஐ விட எளிமையானது மற்றும் சுழல்நிலை பதிவிறக்கங்களுக்கு (முழு வலைத்தளங்களையும் பிரதிபலிக்கும்) சிறந்த ஆதரவைக் கொண்டுள்ளது.
```bash
wget https://www.example.com/file.zip
wget -r https://www.example.com/ # மீண்டும் மீண்டும் பதிவிறக்கவும் (கவனமாக இருங்கள்!)
httpie: உள்ளுணர்வு தொடரியல், JSON ஆதரவு மற்றும் வண்ணமயமாக்கப்பட்ட வெளியீடு கொண்ட நவீன, பயனர் நட்பு HTTP கிளையன்ட். APIகளுடன் தொடர்புகொள்வதற்கு இது சிறந்தது.
http https://www.example.com/api/data # கோரிக்கையைப் பெறுங்கள்
http POST https://www.example.com/api/users name=John age:=30 # JSON உடன் POST
aria2: பல-நெறிமுறை, பல-மூல பதிவிறக்க பயன்பாடு. இது HTTP(S), FTP, SFTP, BitTorrent மற்றும் Metalink ஐ ஆதரிக்கும் பல மூலங்களிலிருந்து ஒரே நேரத்தில் பதிவிறக்கம் செய்யலாம்.
aria2c https://www.example.com/largefile.iso
- நிரலாக்க மொழி நூலகங்கள்: நீங்கள் ஸ்கிரிப்ட் செய்கிறீர்கள் என்றால், நீங்கள் தேர்ந்தெடுத்த மொழியில் உள்ளமைக்கப்பட்ட HTTP நூலகங்களைப் பயன்படுத்துவதைக் கவனியுங்கள் (எ.கா., பைத்தானில்
requests, Go இல்net/http, Node.js இல்node-fetch). இவை உங்கள் குறியீட்டுடன் கூடுதல் கட்டுப்பாடு மற்றும் ஒருங்கிணைப்பை வழங்குகின்றன.
எடுத்துக்காட்டு (requests உடன் Python):
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) முறைகளைச் சேர்ப்பது பிழைத்திருத்தத்திற்கு மிகவும் உதவியாக இருக்கும். - நேரமுடிவுகள் மற்றும் மறுமுயற்சிகள்: இது நெட்வொர்க் கோரிக்கைகளின் ஒரு முக்கியமான, பெரும்பாலும் கவனிக்கப்படாத அம்சமாகும்.
--connect-timeout,--max-time,--retryபோன்றவற்றைச் சேர்ப்பது சிறந்தது. - பல கோப்பு பதிவிறக்கம்: ஒரே நேரத்தில் பல கோப்புகளை எவ்வாறு பதிவிறக்குவது என்பதற்கான விளக்கம் மற்றும் எடுத்துக்காட்டுகளை உள்ளடக்கியது.
- HTTP கருத்துகளின் தெளிவான விளக்கங்கள்: பதில் திசைதிருப்பல்கள், தலைப்புகள் மற்றும் கோரிக்கை முறைகள் போன்ற HTTP கருத்துக்களை சுருக்கமாக விளக்குகிறது, இது பயனர்கள் சில
curlவிருப்பங்களை ஏன் பயன்படுத்துகிறார்கள் என்பதைப் புரிந்துகொள்ள உதவுகிறது. - சிறிய எழுத்து/பெரிய எழுத்து விருப்பங்களின் சரியான பயன்பாடு: கோப்பு வெளியீட்டிற்கு
-o(சிறிய எழுத்து) மற்றும்-O(பெரிய எழுத்து) ஆகியவற்றை வேறுபடுத்துவதில் பதில் கவனமாக உள்ளது, இது குழப்பத்திற்கு ஒரு பொதுவான ஆதாரமாகும். - JSON கையாளுதல்:
Content-Typeதலைப்பை சரியாக அமைப்பது உட்பட,curlஉடன் JSON தரவை எவ்வாறு அனுப்புவது என்பதை எடுத்துக்காட்டுகள் வெளிப்படையாகக் காட்டுகின்றன. நவீன APIகளுடன் பணிபுரிய இது மிகவும் முக்கியமானது. -Fஉடன் கோப்பு பதிவேற்றம்: கோப்பு பதிவேற்றங்களுக்கான எடுத்துக்காட்டுகள் தெளிவாக உள்ளன மற்றும் பல படிவ புலங்களை எவ்வாறு அனுப்புவது என்பதை நிரூபிக்கின்றன.- அங்கீகார முறைகள்: பதில் அடிப்படை, டைஜஸ்ட் மற்றும் தாங்கி டோக்கன் அங்கீகாரம் உள்ளிட்ட பல்வேறு அங்கீகார முறைகளை விரிவாக உள்ளடக்கியது.
- குக்கீ கையாளுதல்:
-c(குக்கீ ஜாடி) மற்றும்-b(குக்கீகளை அனுப்பு) ஆகியவற்றின் விளக்கம் சிறப்பாக செய்யப்பட்டுள்ளது.