The curl guide to HTTP requests
curl is an awesome tool that lets you create network requests from the command line
Published Oct 06, 2018
curl is a a command line tool that allows to transfer data across the network.
It supports lots of protocols out of the box, including HTTP, HTTPS, FTP, FTPS, SFTP, IMAP, SMTP, POP3, and many more.
When it comes to debugging network requests, curl is one of the best tools you can find.
It’s one of those tools that once you know how to use you always get back to. A programmer’s best friend.
It’s universal, it runs on Linux, Mac, Windows. Refer to the official installation guide to install it on your system.
Fun fact: the author and maintainer of curl, swedish, was awarded by the king of Sweden for the contributions that his work (curl and libcurl) did to the computing world.
Let’s dive into some of the commands and operations that you are most likely to want to perform when working with HTTP requests.
Those examples involve working with HTTP, the most popular protocol.
Perform an HTTP GET request
When you perform a request, curl will return the body of the response:
Get the HTTP response headers
By default the response headers are hidden in the output of curl. To show them, use the i
option:
Only get the HTTP response headers
Using the I
option, you can get only the headers, and not the response body:
Perform an HTTP POST request
The X
option lets you change the HTTP method used. By default, GET is used, and it’s the same as writing
Using -X POST
will perform a POST request.
You can perform a POST request passing data URL encoded:
In this case, the application/x-www-form-urlencoded
Content-Type is sent.
Perform an HTTP POST request sending JSON
Instead of posting data URL-encoded, like in the example above, you might want to send JSON.
In this case you need to explicitly set the Content-Type header, by using the H
option:
You can also send a JSON file from your disk:
Perform an HTTP PUT request
The concept is the same as for POST requests, just change the HTTP method using -X PUT
Follow a redirect
A redirect response like 301, which specifies the Location
response header, can be automatically followed by specifying the L
option:
will not follow automatically to the HTTPS version which I set up to redirect to, but this will:
Store the response to a file
Using the o
option you can tell curl to save the response to a file:
You can also just save a file by its name on the server, using the O
option:
Using HTTP authentication
If a resource requires Basic HTTP Authentication, you can use the u
option to pass the user:password values:
Set a different User Agent
The user agent tells the server which client is performing the request. By default curl sends the curl/<version>
user agent, like: curl/7.54.0
.
You can specify a different user agent using the --user-agent
option:
Inspecting all the details of the request and the response
Use the --verbose
option to make curl output all the details of the request, and the response:
Copying any browser network request to a curl command
When inspecting any network request using the Chrome Developer Tools, you have the option to copy that request to a curl request:
Sign up to one of my Premium Online Courses đź“š
CLI CSS Database DevTools Express Git Go GraphQL HTML JavaScript Lab Network Next.js Node.js React Services Svelte Vue.js Web Platform
© 2019 Flavio Copes
🔥 Join one of my Premium Online Courses 🔥
Last updated