cURL: POST request examples
cURL HTTP POST request examples with my most frequently used command-line options.
HTTP POST request
The most basic command you can execute with cURL is an HTTP POST request without a body.
To tell cURL to use a POST request method we can use the -X, --request command-line option, the following command will perform the request and output the response body:
curl -X POST https://blog.marcnuri.comHTTP POST request with data
Whenever you perform a POST request, it's very likely that you need to send some type of data along with it.
To send some data with the POST request we can use the -d, --data command-line option. This will cause curl to send data the same way it does when you fill a browser HTML form and press the submit button. It will also cause cURL to add the Content-Type header with an application/x-www-form-urlencoded value.
curl -X POST -d "field=value&tool=curl" https://postman-echo.com/postHTTP POST request to upload a file
To upload a file using cURL you can use the -F, --form command-line option. Similar to the --data option, this lets cURL simulate a user sending a filled in HTTP form by pressing the submit button.
In this case, cURL adds the Content-Type header, but with a multipart/form-data value instead.
curl -X POST -F "field=@/path/to/file.txt" https://postman-echo.com/postNotice the @ symbol before the path to the file. This forces cURL to attach the file as a file upload.
You can use this method to send data for as many fields as you want:
curl -X POST -F "field=@/path/to/file.txt" -F "tool=curl" -F "other-file=@/path/to/other" https://postman-echo.com/postUpload a file with a custom filename
If you want to change the name of the file you're uploading you can achieve this by tweaking a little the value of the field you provide for the cURL command. You need to add ;filename= followed by the name of the file you want to use instead just after the path to the file you are attaching.
curl -X POST -F 'field=@"/path/to/file.txt";filename="other-name.txt' https://postman-echo.com/postHTTP POST request with JSON data
To perform an HTTP POST request with JSON content in the request body you can use the -d, --data options in combination with a custom Content-Type header (-H, --header).
curl -X POST -d '{"field":"value"}' -H "Content-Type: application/json" https://postman-echo.com/postJSON from file
In case you want to load the JSON content from a file instead of providing it via command-line, you can load it using the @ symbol followed by the path to the file that contains the JSON data:
curl -X POST -d "@file-with-json.json" -H "Content-Type: application/json" https://postman-echo.com/postSummary
These are some of the common cURL POST HTTP request examples I use on a daily basis. I hope they may come in useful for you too.
