Curl is a wonderful tool for initiate REST APIs or calls. Or, you can literally open any web URL through it, and save files on public URLs through it. Its pretty light weight.
All you need is a terminal or console.
A Simple GET Rest Call
``` curl https://yourhost/api/getthingsOR
curl -X GEThttps://yourhost/api/getthings
And, you will get the result of this rest endpoint on the console or terminal.
Note: In above example, I assume there is no authentication asked by REST endpoint.
<h2>A POST Call</h2>
Lets assume you have a REST endpoint which takes some data in a POST call.curl -X POST -H “Content-Type: application/json” -d ’{“msg”: {“to”: “abc-at-smail”}}’ localhost:3000/api/queue/v1
Here, I'm passing a json data to rest endpoint, and mentioned that its a POST call by -X switch.
Note: You need to mention header "Content-Type: application/json" to pass a json to your endpoint. Else, your end point will take it as a string not json.
<h2>Pass Http Headers</h2>
You can pass as many headers to your rest endpoint as you want. Curl provides -H switch, and you pass multiple headers.
curl -H “Host: www.host.com” -H “Authorization: xyz” -H “Content-Type: application/json” localhost:3000/api/queue/v1
<h2>Download static resource like Image</h2>
Assume you have a public url for image like, and you want to download to your machine or server.curl https://www.owasp.org/images/1/1d/Session-Management-Diagram_Cheat-Sheet.png -o file.png
You specify -o flag to write to a file and give a name. Else, this will display content of that resource on console.
<h2>Download html</h2>
Similarly, you can download html of resource.curl https://www.owasp.org/index.php/Session_Management_Cheat_Sheet -o file.html
This will download the htmlonly, not any other resources like image or css or javascript.
## Using curl for upload file on AWS S3
See [Uploading to S3 witj Curl](/tutorials/how-upload-aws-s3-curl/)
If you have any difficulty using curl, put it in comment below.
Enjoy












