- curl cheat sheet
- Passing request headers with curl
- Benchmarking with curl
- Put a new line at the end of the response body
- Specify multiple query strings
- Content-Type:application/x-www-form-urlencoded when request header is unspecified in curl
- Specify HTTP1.0, HTTP1.1, HTTP2.0
- Specify the request body with a heapdocument (Linux)
- Running curl commands without a proxy
- curl to https://~~~ with curl in Windows 10
- SSL Client Authentication
- URL encoding
- Copy the curl command from Chrome Developer Tools
- JSON parse error: Invalid UTF-8 ~(Windows)
- Sending local files with curl POST
- Related
curl cheat sheet
The -X option specifies the HTTP method. The HTTP methods to be specified are as follows
HTTP Methods |
---|
GET |
PUT |
POST |
DELETE |
PATCH |
You can pass a request body by specifying the -d option followed by a string. The request body is passed as a string.
curl -X POST -d '{"key":["aaa","bbb"]}' https://example.com/
The -I option displays response headers.
curl -I -X POST https://example.com/
The -i option displays response headers and response body.
curl -X POST -d '{"key":["aaa","bbb"]}' https://example.com/ -i
Pass request headers with the -H option. The following passes Host:xxx.execute-api.ap-northeast-1.amazonaws.com.
curl -X POST -H Host:xxx.execute-api.ap-northeast-1.amazonaws.com https://example.com/
To pass multiple request headers, use multiple -H options, such as -H 'xxx: yyy' -H 'aaa: bbb'
.
Passing request headers with curl
To pass request headers, use the -H option, such as -H ‘Bearer hogehoge’.
curl -0 -i -X GET -H 'Authorization: Bearer hoge' https://example.com/company/1
Bearer Certification:「https://qiita.com/h_tyokinuhata/items/ab8e0337085997be04b1」
Benchmarking with curl
You can use the -w option in curl for benchmark testing.
curl -X GET https://example.com/ -o /dev/null -w "%{time_total}\"
Hide the response body with -o /dev/null
.
The variables available are (there are many more)
variable | meaning |
---|---|
time_total | Time to complete download (seconds) |
time_starttransfer | Time (in seconds) to receive the first byte of the response |
Put a new line at the end of the response body
To put a newline code at the end of the curl command, use -w “\n” to put a newline code and make it easier to read.
Specify multiple query strings
If you specify multiple query strings, such as https://example.com/?hoge1=fuga1\&hoge2=fuga2, you need to escape the & from the & mark.
curl -X GET https://example.com/?hoge1=fuga1&hoge2=fuga2
Content-Type:application/x-www-form-urlencoded when request header is unspecified in curl
If you do not specify the request header in the curl command, it will be Content-Type:application/x-www-form-urlencoded.
curl --verbose https://~~/ > /dev/null
You can see that the Content-Type of the request header is application/x-www-form-urlencoded.
To prevent this, you need to explicitly set -H ‘ContentType:xxx’.
Specify HTTP1.0, HTTP1.1, HTTP2.0
The curl -0 option sends the request with HTTP1.0.
The curl –http1.1 option sends a request with HTTP1.1.
curl –http2 option sends a request with HTTP2.0.
Specify the request body with a heapdocument (Linux)
The request body is specified with the -d option. Then, the request body can be specified in a heared document with @- and EOF.
$ curl -X POST https://xxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/v1/get -d @- <<EOF > { > key:value > } > EOF
Running curl commands without a proxy
In some cases, a proxy may get in the way and prevent curl commands from being executed. In such cases, use the --noproxy
option to specify a host that does not use a proxy.
curl --noproxy localhost -X GET http://localhost:8080/~~~
curl to https://~~~ with curl in Windows 10
I thought curl on Windows 10 does not support the https protocol, but if I enclose the URL in double quotes, it works fine.
SSL Client Authentication
For SSL client authentication with curl, specify a .pem file. .pfx files do not seem to be supported.
curl --cert hoge.pem ~
If it is in pfx format, it must be converted to pem format using the following openssl command.
openssl pkcs12 -in ./hoge.pfx -out hoge.pem -nodes -clcerts
URL encoding
Here is an example of encoding query parameters with the curl command in Windows 10.
Use the “-G” and “–data-urlencode” options.
Hyphens and other characters must also be URL encoded.
curl -G -X GET http://localhost:8080/test --data-urlencode "hoge1-id=fuga1" --data-urlencode "hoge2-id=fuga2"
Copy the curl command from Chrome Developer Tools
You can access the appropriate URL in Chrome and copy the curl command (both win and bash) from the Network tab of the Chrome Developer Tools.
JSON parse error: Invalid UTF-8 ~(Windows)
If you include Japanese characters in the request body using the curl command on Windows, you will get a “JSON parse error: Invalid UTF-8 start byte ~” error.
If you want to include Japanese characters in the request body using the curl command on Windows, prepare a json file.
Specify the file with the “-d” option and “@”.
curl -X POST -d @sample.json http://localhost:8080/hoge
sample.json
{"address":"大阪市"}
Sending local files with curl POST
Use the “-F” option to send local files with curl.
curl -X POST -F file1=@/path/to/file.json https://~
The file is specified in the form @filename.
コメント