CURL for dummies
After being in the industry for so many years, I always felt that the power of curl
is something which was unexplored by me. Most of the time I end up using Postman. Though Postman is a great tool with all the curl
features implemented, but there are few scenarios where I felt my lack of knowledge of curl stopped me from moving faster. One such instance was in my previous job I was asked to fix something in an On-Premise system which was production critical and after initial round of debugging we came to understand that firewall was blocking outgoing requests. I ended up writing python script to perform few basic http operations which was pretty easy to be done using curl
. Lets look into basic curl operation
How to make GET request using curl?
By default curl makes http get method request.
curl https://google.com
The response in the above request is going be simple html response code which the browser receives when a request is made to open https://google.com. If no http method is mentioned then curl would be using GET request.
Here is the syntax for curl
curl [options] [url]
Following are the options which we use day to day
curl -o quill_editor.js https://cdn.quilljs.com/1.3.6/quill.js
would download the content of the quill js and save it in a new file namedquill_editor.js
curl -O https://cdn.quilljs.com/1.3.6/quill.js
would download the content of quill js and save it inquill.js
curl -I --http2 https://thetldr.tech
would return only the http header responsecurl -L thetldr.tech
would automatically do http redirects.curl -A "GoogleBot" https://thetldr.tech
would update the UserAgent togooglebot
rather than the default curl UserAgentcurl -L -b "newCookie=a" https://thetldr.tech
would set the cookienewCookie=a
in the http header request before sending.
How to do POST request using curl?
curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"data":"post_data", "num":10}' http://localhost:8000/api/postJsonRequest
If you want to send a larger request body then it is difficult to send via command line and would be recommended to save the content to a file and then use the following command
curl -H "Content-Type: application/json" -X POST --data @body.json http://localhost:8000/postrequest/
Here the post request body is saved in body.json
also do make sure the @
character added before the file name, this is very important.
Similarly for any PUT/PATCH
request all we need to do is update the method,
curl -H "Content-Type: application/json" -X PUT --data @body.json http://localhost:8000/postrequest/