DEV Community

Cover image for How to make a POST request with cURL
Suresh Ramani
Suresh Ramani

Posted on • Originally published at techvblogs.com

How to make a POST request with cURL

What is cURL?

Curl is a command-line utility that allows users to create network requests. Curl is accessible on Windows, Linux, and Mac, making it the go-to choice for developers across all platforms.

A cURL is computer software and command-line tool used to make requests for different protocols. But the most popular usage with the curl command is making HTTP post requests. Even the curl command-line tool is created for the Linux operating systems it is cross-platform and can be used for Windows, MacOSX, BSD, etc. In this tutorial, we will learn how to make different HTTP POST requests by using curl.

In this article, we’re going to explain how to use cURL to make POST requests. The HTTP POST method is used to send data to the remote server.

Making a POST request

The general form of the curl command for making a POST request is as follows:

curl -X POST [options] [URL]
Enter fullscreen mode Exit fullscreen mode

The -X the option specifies which HTTP request method will be used when communicating with the remote server.

The type of the request body is indicated by its Content-Type header.

Generally, a POST request is sent via an HTML form. The data sent to the form is usually encoded in either multipart/form-data or application/x-www-form-urlencoded content type.

Make a simple POST Request

We start with a simple example where we make a POST request to the specified URL. The -X option is used to specify the request type which is POST and we also provide the URL.

curl -X POST http://example.com
Enter fullscreen mode Exit fullscreen mode

If the -X POST is not specified the GET method of the HTTP protocol is used by default.

Send Additional Fields with POST Request

The POST request can be used to send some data to the remote URL with the POST request. The data can be specified via the command line by using the -d option and data like below.

curl -d "firstname=John&lastname=Andrew" -X POST http://example.com
Enter fullscreen mode Exit fullscreen mode

The provided data is separated with the & sign and generally structured as name=value. Using the -d option also adds some implicit HTTP headers like Content-Type etc.

Specifying the Content-Type in the POST request

The -H a flag can be used to send a specific data type or header with a curl. The following command sends a JSON object with the request.

curl -d '{json}' -H 'Content-Type: application/json' https://example.com
Enter fullscreen mode Exit fullscreen mode

Specify Cookie with POST Request

Some web applications use authentication and authorization which rely on cookies. The curl command can be used with a cookie to access restricted resources by authenticating requests. The -b or –cookie option can be used to specify the cookie data.

curl --cookie "sadad1321saweqe" -X POST http://example.com
Enter fullscreen mode Exit fullscreen mode

Sending a file using curl

To POST a file with curl, simply add the @ symbol before the file location. The file can be an archive, image, document, etc.

curl -X POST -F 'image=@/home/user/Downloads/profile.jpg' http://example.com/upload
Enter fullscreen mode Exit fullscreen mode

Send JSON Data using curl

One of the most popular use-cases for the curl command is using the JSON format for communication, especially for requests. In the following example, we send JSON data to the server.

curl -d '{"key1":"value1", "key2":"value2"}' -H "Content-Type: application/json" -X POST "http://example.com/data"
Enter fullscreen mode Exit fullscreen mode

Alternatively, the JSON data can be located in a file and this file JSON data can be sent to the server like below.

curl -d "@mydata.json" -X POST "http://example.com/data"
Enter fullscreen mode Exit fullscreen mode

Conclusion

This article shows the importance of the Curl command in Linux and discusses the usage of curl post requests on Linux. I clarified how to make POST requests using the CURL command.

Thank you for reading this article.

Top comments (0)