- curlチートシート
- curlでリクエストヘッダを渡す
- curlでベンチマーク
- レスポンスボディの末尾に改行を入れる
- 複数のクエリ文字列を指定する
- curlでリクエストヘッダ未指定にするとContent-Type:application/x-www-form-urlencodedになる
- HTTP1.0,HTTP1.1,HTTP2.0を指定する
- リクエストボディをヒアドキュメントで指定する(Linux)
- プロキシを使用しないでcurlを叩く
- Windows10のcurlでhttps://~~にcurlする
- 失効の関数は証明書の失効を確認できませんでした。(Windows)
- SSLクライアント認証
- URLエンコード
- Chrome開発者ツールからcurlコマンドをコピーする
- JSON parse error: Invalid UTF-8 ~(Windows)
- curlのPOSTでローカルファイルを送信する
- SOAP API(Linux)
curlチートシート
-XでHTTPメソッドを指定します。指定するHTTPメソッドは以下の通りです。
HTTPメソッド |
---|
GET |
PUT |
POST |
DELETE |
PATCH |
-dオプションに続けて文字列を指定すると、リクエストボディを渡せます。リクエストボディは文字列で渡ります。
curl -X POST -d '{"key":["aaa","bbb"]}' https://example.com/ (Linux) curl -X POST -d "{\"key\":[\"aaa\",\"bbb\"]}" https://example.com/ (Windows)
-Iオプションでレスポンスヘッダを表示します。
curl -I -X POST https://example.com/ (Linux)
-iオプションでレスポンスヘッダ、レスポンスボディを表示します。
curl -X POST -d '{"key":["aaa","bbb"]}' https://example.com/ -i (Windows)
-Hオプションでリクエストヘッダを渡します。以下は、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/ (Windows/Linux)
複数のリクエストヘッダを渡す場合は-H 'xxx: yyy' -H 'aaa: bbb'
というように複数の-Hオプションを使用します。
curlでリクエストヘッダを渡す
リクエストヘッダを渡すには、-H 'Bearer hogehoge'
というように-Hオプションを使用します。
curl -0 -i -X GET -H 'Authorization: Bearer hoge' https://example.com/company/1
Bearer認証:「https://qiita.com/h_tyokinuhata/items/ab8e0337085997be04b1」
curlでベンチマーク
curlで-wオプションを使用してベンチマークテストができます。
curl -X GET https://example.com/ -o /dev/null -w "%{time_total}\"
-o /dev/null
でレスポンスボディを非表示にします。
使用できる変数は以下です。(もっといっぱいあります)
変数 | 意味 |
---|---|
time_total | ダウンロードが完了するまでの時間(秒) |
time_starttransfer | レスポンスの最初のバイトを受け取るまでの時間(秒) |
レスポンスボディの末尾に改行を入れる
curlコマンドで末尾に改行コードを入れるには-w "\n"
とすれば改行コードが入って見やすくなります。
複数のクエリ文字列を指定する
https://example.com/?hoge1=fuga1\&hoge2=fuga2というように複数クエリ文字列を指定する場合、&を\マークエスケープしてあげる必要があります。
curl -X GET https://example.com/?hoge1=fuga1&hoge2=fuga2
curlでリクエストヘッダ未指定にするとContent-Type:application/x-www-form-urlencodedになる
curlコマンドでリクエストヘッダを指定しない場合、Content-Type:application/x-www-form-urlencodedになってしまいます。
curl --verbose https://~~/ > /dev/null
リクエストヘッダのContent-Typeがapplication/x-www-form-urlencodedになっているのが確認できると思います。
こちらを防ぐには-H 'Content-Type:xxx'
と明示的にしているする必要があります。
HTTP1.0,HTTP1.1,HTTP2.0を指定する
curl -0オプションでHTTP1.0でリクエストを送ります。
curl –http1.1オプションでHTTP1.1でリクエストを送ります。
curl –http2オプションでHTTP2.0でリクエストを送ります。
リクエストボディをヒアドキュメントで指定する(Linux)
リクエストボディは-dオプションで指定します。続けて、@-とEOFでリクエストボディをヒアドキュメントで指定することが出来ます。
$ curl -X POST https://xxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/v1/get -d @- <<EOF { key:value } EOF
プロキシを使用しないでcurlを叩く
プロキシが邪魔をしてcurlコマンドが叩けない場合があります。そういった場合は--noproxy
オプションでプロキシを使用しないホストを指定しておきます。
curl --noproxy localhost -X GET http://localhost:8080/~~~
Windows10のcurlでhttps://~~にcurlする

どうもWindows10のcurlではhttpsプロトコル対応していないのかと思ったのですが、URLをダブルクォートで囲むと正常動作します。
失効の関数は証明書の失効を確認できませんでした。(Windows)
「失効の関数は証明書の失効を確認できませんでした。」エラーが出た場合、-kオプションで安全でないサーバ接続を許可すれば回避できます。
curl -i -k -X POST https://~
「curlコマンドで「unable to verify the first certificate」エラーを無視する」参照
SSLクライアント認証
curlでSSLクライアント認証する場合は.pemファイルを指定します。.pfxファイルは対応していないようです。
curl --cert hoge.pem ~
pfx形式の場合は以下のopensslコマンドでpem形式に変換する必要があります。
openssl pkcs12 -in ./hoge.pfx -out hoge.pem -nodes -clcerts
URLエンコード
Windows10のcurlコマンドでクエリパラメータをエンコードする例です。
-Gと--data-urlencode
オプションを使用します。
ハイフンなどもURLエンコードする必要があります。
curl -G -X GET http://localhost:8080/test --data-urlencode "hoge1-id=fuga1" --data-urlencode "hoge2-id=fuga2"
Chrome開発者ツールからcurlコマンドをコピーする
Chromeで適当なURLにアクセスし、Chrome開発者ツールのネットワークタブからcurlコマンド(win,bashともに)コピーすることが出来ます。
JSON parse error: Invalid UTF-8 ~(Windows)
Windowsのcurlコマンドでリクエストボディに日本語をいれると「JSON parse error: Invalid UTF-8 start byte ~」エラーとなります。
Windowsのcurlコマンドで日本語をリクエストボディにいれたい場合はjsonファイルを用意します。
-dオプションと@でファイルを指定します。
curl -X POST -d @sample.json http://localhost:8080/hoge
sample.json
{"address":"大阪市"}
curlのPOSTでローカルファイルを送信する
curlでローカルファイルを送信するには-Fオプションを使用します。
curl -X POST -F file1=@/path/to/file.json https://~
ファイルは@ファイル名という形で指定します。
SOAP API(Linux)
curlコマンドでSOAP APIを実行する例です。postするxmlはdata.xmlファイルに格納します。
curl -X POST http://xxx.co.jp/xxx \ -H 'Content-Type: application/xml' -d @data.xml


KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
資格:少額短期保険募集人,FP3級
コメント