𝗠𝗮𝗸𝗲 𝗛𝗧𝗧𝗣 𝗥𝗲𝗾𝘂𝗲𝘀𝘁𝘀 𝗪𝗶𝘁𝗵𝗼𝘂𝘁 𝗖𝘂𝗿𝗹

તમે કદાચ curl અથવા wget વગરના સર્વર પર કામ કરી રહ્યા હોઈ શકો છો. તમારે કોઈ endpoint ટેસ્ટ કરવાની જરૂર છે પરંતુ તે સાધનો (tools) ઉપલબ્ધ નથી. તમે HTTP requests સીધી રીતે મોકલવા માટે Bash નો ઉપયોગ કરી શકો છો.

Bash માં /dev/tcp નામનું એક છુપાયેલું ફીચર છે. આ કોઈ વાસ્તવિક ફાઇલ નથી. તે એક ખાસ ડિવાઇસ છે જેને Bash સમજે છે. જ્યારે તમે /dev/tcp/hostname/port પર લખો છો, ત્યારે Bash તમારા માટે TCP connection ખોલે છે.

તે કેવી રીતે કામ કરે છે:

તમે file descriptors ને મેનેજ કરવા માટે exec કમાન્ડનો ઉપયોગ કરો છો. ઉદાહરણ તરીકે, તમે વાંચવા અને લખવા માટે file descriptor 3 ખોલી શકો છો.

તેની સિન્ટેક્સ (syntax) આ મુજબ છે: exec 3<>/dev/tcp/example.com/80

એકવાર આ connection ખુલી જાય પછી, તમે તેમાં ડેટા મોકલી શકો છો. તમે તેમાંથી ડેટા વાંચી પણ શકો છો. આ પદ્ધતિ તમને બતાવે છે કે HTTP protocol નીચલા સ્તરે (low level) કેવી રીતે કામ કરે છે.

GET request કેવી રીતે કરવી:

ડેટા મેળવવા માટે, તમારે સાચા headers મોકલવા આવશ્યક છે. તમારી વિનંતી (request) પૂરી થઈ છે તે દર્શાવવા માટે તમારે અંતમાં એક ખાલી લાઇન રાખવી જરૂરી છે.

આ સ્ટેપ્સ અનુસરો:

ઉદાહરણ સ્ક્રિપ્ટ:

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>&-

આ ટેકનિક તમને ક્લાયન્ટ્સ અને સર્વર્સ એકબીજા સાથે કેવી રીતે વાત કરે છે તે સમજવામાં મદદ કરે છે. મિનિમલિસ્ટ (minimalist) સિસ્ટમ્સ પર debugging કરવા માટે આ એક ઉપયોગી કૌશલ્ય છે.

Source: https://dev.to/kelvin_kariuki_20f4bec616/developer-take-on-til-you-can-make-http-requests-without-curl-using-bash-devtcp-578k