I recently discovered the -i switch to curl! I have no idea why I didn’t know about this before…

Curl is one of those tools that every developer should know. It’s universal and tends to be available everywhere.

When developing APIs, I prefer to use curl to view the output of a request like this:

$ curl -v -H "Accept: application/json" https://api.joind.in/
*   Trying 178.208.42.30...
* Connected to api.joind.in (178.208.42.30) port 443 (#0)
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
* Server certificate: api.joind.in
* Server certificate: Gandi Standard SSL CA 2
* Server certificate: USERTrust RSA Certification Authority
* Server certificate: AddTrust External CA Root
> GET / HTTP/1.1
> Host: api.joind.in
> User-Agent: curl/7.43.0
> Accept: application/json
> 
< HTTP/1.1 200 OK
< Date: Sun, 15 May 2016 11:05:27 GMT
< Server: Apache
< X-Powered-By: PHP/5.6.4
< Access-Control-Allow-Origin: *
< Content-Length: 363
< Content-Type: application/json; charset=utf8
< 
* Connection #0 to host api.joind.in left intact
{"events":"https://api.joind.in/v2.1/events","hot-events":"https://api.joind.in/v2.1/events?filter=hot","upcoming-events":"https://api.joind.in/v2.1/events?filter=upcoming","past-events":"https://api.joind.in/v2.1/events?filter=past","open-cfps":"https://api.joind.in/v2.1/events?filter=cfp","docs":"http://joindin.github.io/joindin-api/"}

-v is for verbose and so you get told all the information you could possibly want. However, usually, I only want to know the response’s headers and body.

Enter the -i switch!

$ curl -i -H "Accept: application/json" https://api.joind.in/
HTTP/1.1 200 OK
Date: Sun, 15 May 2016 11:10:24 GMT
Server: Apache
X-Powered-By: PHP/5.6.4
Access-Control-Allow-Origin: *
Content-Length: 363
Content-Type: application/json; charset=utf8

{"events":"https://api.joind.in/v2.1/events","hot-events":"https://api.joind.in/v2.1/events?filter=hot","upcoming-events":"https://api.joind.in/v2.1/events?filter=upcoming","past-events":"https://api.joind.in/v2.1/events?filter=past","open-cfps":"https://api.joind.in/v2.1/events?filter=cfp","docs":"http://joindin.github.io/joindin-api/"}

Much better!

-i is for include and from the man page:

Include the HTTP-header in the output. The HTTP-header includes things like server-name, date ofthe document, HTTP-version and more…

This is exactly what I want without the information that I don’t!

Source: AKRABAT

By Rob