Curl இல்லாமலேயே HTTP Requests செய்யுங்கள்

நீங்கள் curl அல்லது wget இல்லாத ஒரு சர்வரில் வேலை செய்யலாம். ஒரு endpoint-ஐ நீங்கள் சோதனை செய்ய வேண்டியிருக்கும், ஆனால் அந்த கருவிகள் அங்கு இருக்காது. நீங்கள் நேரடியாக HTTP requests அனுப்ப Bash-ஐப் பயன்படுத்தலாம்.

Bash-இல் /dev/tcp எனப்படும் ஒரு மறைமுக அம்சம் உள்ளது. இது ஒரு உண்மையான கோப்பு (file) அல்ல. இது Bash புரிந்துகொள்ளும் ஒரு சிறப்பு சாதனம் (special device). நீங்கள் /dev/tcp/hostname/port என்ற முகவரிக்கு எழுதும்போது, Bash உங்களுக்காக ஒரு TCP இணைப்பை (connection) உருவாக்குகிறது.

இது எப்படிச் செயல்படுகிறது:

file descriptors-களை நிர்வகிக்க நீங்கள் exec கட்டளையைப் பயன்படுத்தலாம். உதாரணமாக, படிப்பதற்கும் எழுதுவதற்கும் (reading and writing) file descriptor 3-ஐ நீங்கள் திறக்கலாம்.

இதன் தொடரியல் (syntax) இவ்வாறு இருக்கும்: exec 3<>/dev/tcp/example.com/80

இந்த இணைப்பு தொடங்கியவுடன், நீங்கள் அதற்குத் தரவை (data) அனுப்பலாம். அதிலிருந்து தரவைப் படிக்கவும் முடியும். இந்த முறை HTTP protocol மிகத் தாழ்ந்த நிலையில் (low level) எவ்வாறு செயல்படுகிறது என்பதைக் காட்டுகிறது.

GET request செய்வதன் முறை:

தரவைப் பெற, நீங்கள் சரியான headers-களை அனுப்ப வேண்டும். உங்கள் கோரிக்கை (request) முடிவடைந்ததைக் குறிக்க இறுதியில் ஒரு வெற்று வரியை (blank line) விட வேண்டும்.

இந்த வழிமுறைகளைப் பின்பற்றவும்:

உதாரண ஸ்கிரிப்ட்:

HOST="example.com"
PORT=80
REQUEST_PATH="/"
exec 3<>/dev/tcp/${HOST}/${PORT}
printf "GET ${REQUEST_PATH} HTTP/1.0\r\nHost: ${HOST}\r\n\r\n" >&3
cat <&3
exec 3>&-

கிளையண்ட்களும் (clients) சர்வர்களும் எவ்வாறு ஒருவருக்கொருவர் தொடர்பு கொள்கின்றன என்பதைப் புரிந்துகொள்ள இந்த நுட்பம் உதவுகிறது. மிகக் குறைந்த வசதிகள் கொண்ட அமைப்புகளில் (minimalist systems) பிழைகளைக் கண்டறிய (debugging) இது ஒரு பயனுள்ள திறமையாகும்.

ஆதாரம்: https://dev.to/kelvin_kariuki_20f4bec616/developer-take-on-til-you-can-make-http-requests-without-curl-using-bash-devtcp-578k