When it comes to interacting with APIs or web servers, cURL is an incredibly powerful and versatile tool. Whether you’re fetching data with a GET request or sending data with a POST request, cURL can handle it all. In this blog post, we will explore how to use cURL to perform HTTP GET and POST requests with JSON and XML data.

Command line execution

Terminalbash
sed in scripting, testing APIs, and debugging web services because it supports a wide range of options and is available on most platforms. Performing an HTTP GET Request with cURL An HTTP GET request is used to retrieve data from a server. For example, you might want to fetch some data from a REST API. Let’s see how to do this using cURL. Example: Suppose you want to retrieve data from an API that provides information about books. You can do this with a simple GET request using cURL: curl -X GET "https://api.example.com/books" This command sends an HTTP GET request to the specified URL and returns the response from the server. GET Request with JSON Data Sometimes, APIs require you to send additional parameters or headers, such as specifying that you want the response in JSON format. Here’s how you can do that: curl -X GET "https://api.example.com/books" -H "Accept: application/json" In this example, the  -H  flag is used to add a header specifying that the client (you) accepts a JSON response. GET Request with Query Parameters If the API requires you to pass parameters in the URL, you can include them directly in the URL string: curl -X GET "https://api.example.com/books?author=John+Doe&published=2024" Here, the URL contains query parameters to filter books by the author “John Doe” and the publication year “2024.” Performing an HTTP POST Request with cURL An HTTP POST request is used to send data to a server, often to create or update resources. When working with APIs, you might need to send JSON or XML data in the body of the request. POST Request with JSON Data Let’s say you want to add a new book to the database. You can do this by sending a POST request with JSON data: curl -X POST "https://api.example.com/books" \      -H "Content-Type: application/json" \      -d '{"title":"New Book","author":"Jane Doe","published":2024}' In this example: The  -X POST  flag specifies the HTTP method as POST. The  -H "Content-Type: application/json"  header tells the server that the data you’re sending is in JSON format. The  -d  flag is used to specify the data you want to send. The data is enclosed in single quotes and written in JSON format. POST Request with XML Data If the API expects data in XML format, you can easily modify the request: curl -X POST "https://api.example.com/books" \      -H "Content-Type: application/xml" \      -d '<book><title>New Book</title><author>Jane Doe</author><published>2024</published></book>' Here, the data is written in XML format, and the  Content-Type  header is set to  application/xml  to inform the server of the data format. Common cURL Options cURL provides a wide range of options to customize your HTTP requests. Some commonly used options include: -I  or  --head : Fetch the headers only. -v  or  --verbose : Provide detailed information about the request and response. -L  or  --location : Follow redirects if the server responds with a redirection. Using cURL to perform HTTP GET and POST requests with JSON and XML data is straightforward once you understand the basics. Whether you’re testing an API or automating a task, cURL’s flexibility makes it a go-to tool for developers and system administrators.

Risk level: destructive. Review the command before running it.

Implementation details

We’ll provide clear examples and explain the concepts in a simple, human-friendly way. What is cURL? cURL (Client URL) is a command-line tool that allows you to transfer data to or from a server using various protocols, including HTTP, HTTPS, FTP, and more. It’s widely used in scripting, testing APIs, and debugging web services because it supports a wide range of options and is available on most platforms. Performing an HTTP GET Request with cURL An HTTP GET request is used to retrieve data from a server.

Gotchas and common issues

  • Permission checks - verify user access rights and sudo privileges before executing system-level operations.

  • Environment configuration - double-check path variables and dependency versions to prevent runtime failures.

  • Backup safeguards - maintain configuration backups before applying system or database modifications.

Following these steps ensures clean configuration and reliable execution for mastering curl: how to perform http get and post requests with json and xml data.