Debug School

rakesh kumar
rakesh kumar

Posted on • Updated on

How curl Command is useful for Debugging and Error logging In Linux

how-to-test-a-rest-api-from-command-line-with-curl
curl-command-in-linux-with-examples
curl-command
curl-command-linux
curl-command-with-examples-linux
debugging-http-requests-and-responses-using-curl-4c5g
how-to-test-a-rest-api-from-command-line-with-curl
how-curl-command-is-useful-for-ssltls-connections

how curl Command is useful for Debugging

why we Debugging HTTP requests and responses in linux
testing and debugging web applications
interact with web servers, download files, and test RESTful APIs
Debugging HTTP requests and responses
Testing RESTful APIs
debug an HTTP GET request
test RESTful APIs
debug SSL/TLS connections
upload a file to a server using HTTP POST

why we Debugging HTTP requests and responses in linux

Verifying correct HTTP status codes(200 for success and 404 for failed)
Checking HTTP headers
Debugging HTTP requests and responses

The curl command is a popular tool used for testing and debugging web applications. It is a versatile command-line tool that can be used to interact with web servers, download files, and test RESTful APIs.

Curl is a command line tool and library for transferring data with URL syntax
Here are some examples of how curl can be used for debugging:

1.Debugging HTTP requests and responses:

The -v (verbose) option can be used to print verbose information about the HTTP request and response. For example, to debug an HTTP GET request, you can run the following command:

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

This will print out the HTTP headers and response body.

2.Testing RESTful APIs:
The curl command can be used to test RESTful APIs. For example, to send a GET request to an API endpoint, you can run the following command:

curl -X GET http://api.example.com/users
Enter fullscreen mode Exit fullscreen mode

This will send a GET request to the users endpoint of the api.example.com server.

3.Debugging SSL/TLS connections:
The curl command can be used to debug SSL/TLS connections by displaying detailed information about the SSL/TLS handshake process. For example, to debug an SSL/TLS connection to a server, you can run the following command:

curl -v https://example.com
Enter fullscreen mode Exit fullscreen mode

This will display the SSL/TLS handshake process, including the certificates used for the connection.

4.Uploading files:
The curl command can be used to upload files to a server. For example, to upload a file to a server using HTTP POST, you can run the following command:

curl -X POST -F "file=@/path/to/file" http://example.com/upload
Enter fullscreen mode Exit fullscreen mode

This will upload the file located at /path/to/file to the upload endpoint of the example.com server.

These are just a few examples of how curl can be used for debugging. It is a powerful tool that can help developers diagnose and resolve issues with web applications.

why we Debugging HTTP requests and responses in linux

Debugging HTTP requests and responses in Linux using command-line tools such as curl can be helpful in several ways:

1.Verifying correct HTTP status codes:
When making an HTTP request, it's important to ensure that the server returns the expected HTTP status codes. For example, a successful request should return a 200 OK status code, while a failed request might return a 404 Not Found status code. By using a tool like curl to make the request, you can verify that the server returns the correct status code. For example:

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

This will send an HTTP HEAD request to http://example.com and print the HTTP headers, including the status code.

2.Checking HTTP headers:
HTTP headers provide additional information about the request and response, such as the content type, encoding, and caching information. By using curl to make the request and print the headers, you can ensure that the headers are correct and contain the expected information. For example:

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

This will print the HTTP headers for the request to http://example.com.

3.Debugging HTTP requests and responses:
When developing web applications, it's important to be able to debug HTTP requests and responses to identify and resolve issues. By using curl to make the request and print verbose output, you can see the exact details of the request and response, including the request method, headers, body, and response headers and body. For example:

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

This will send an HTTP GET request to http://example.com and print verbose output, including the request and response headers and body.

Overall, debugging HTTP requests and responses in Linux using command-line tools such as curl can help ensure that web applications are working correctly and can help identify and resolve

checklist of error for curl commands with examples

Image description

Image description

Image description

Image description

HEAD requests
If you want to check if a resource is serviceable, what kind of headers it provides and other useful meta-information written in response headers, without having to transport the entire content, you can make a HEAD request.

Let’s say I want to see what I would GET when requesting latest public bookmarks. I would issue the following HEAD request with curl:

curl -I https://www.codever.dev/api/public/bookmarks
OR
curl -i -X HEAD https://www.codever.dev/api/public/bookmarks

Image description

HTTP/1.1 200 OK
Server: nginx/1.12.0
Date: Sun, 23 Feb 2020 21:31:40 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 98452
Connection: keep-alive
X-Powered-By: Express
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: Content-Type, Authorization, Location
Access-Control-Expose-Headers: Content-Type, Authorization, Location
ETag: W/"18094-R7MFvLpccDdVu3q8rR1UQBrAaX8"
Strict-Transport-Security: max-age=63072000; includeSubdomains
X-Content-Type-Options: nosniff
Enter fullscreen mode Exit fullscreen mode

Image description

curl https://www.codever.dev/api/version
Enter fullscreen mode Exit fullscreen mode

hich is equivalent with

curl -X GET "https://www.codever.dev/api/version" -H "accept: application/json"
Enter fullscreen mode Exit fullscreen mode

Response

{"version":"7.0.0","gitSha1":"71eb40fb6d224d5d9a90c89ae943390e15f001c3"}
Enter fullscreen mode Exit fullscreen mode

Note the use of accept: application/json

Curl options

-H, --header : customer header to pass to the server
If you want to have it displayed prettier I suggest you use a tool like jq:

Request

curl https://www.codever.dev/api/version | jq .
Enter fullscreen mode Exit fullscreen mode

Response

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    72  100    72    0     0    611      0 --:--:-- --:--:-- --:--:--   615
{
  "version": "7.0.0",
  "gitSha1": "71eb40fb6d224d5d9a90c89ae943390e15f001c3"
}
Enter fullscreen mode Exit fullscreen mode

If you don’t want the progress meter (first part) shown, you can silent curl:

curl -s https://www.codever.dev/api/version | jq .

Top comments (0)