環境
- windows10
- gitbash 2.32.0.1
以下のYOTUBE動画にて、より詳しい内容をご覧いただけます。
Curlコマンドとは
cURLとは、主にUNIX系OSでよく利用されるコマンドおよびプログラムの一つで、様々なプロトコル(通信手順)を用いてURLで示されるネットワーク上の場所との間でデータの送受信を行うもの。オープンソースソフトウェアとして公開されている。
curlコマンドはHTTPSやFTP, Telnet, SMTP, IMAP, POP3など様々な通信プロトコルを駆使して、コマンドライン上からデータ転送を行うことができるコマンドです。
例えば、APIサーバー等へプログラム上からではなく、サクッとGET、POSTなどのリクエストを送りたいなどの場合に有用です。
GETリクエスト例
シンプルにGET
curl https://www.google.com/
GETした内容をhtmlに出力
// curl -o <出力パス> <url>
curl -o /c/Users/username/Desktop/hoge.html https://www.google.com/
GETした内容をhtmlに出力
// curl -o <出力パス> <url>
curl -o /c/Users/username/Desktop/hoge.html https://www.google.com/
HTTPリクエストヘッダーも取得したい
// -vで、content-typeやら、user-agent、cookieなどのリクエストヘッダを表示可能
curl -v https://www.google.com/
Basic認証対応
curl -u <id>:<password> https://sample.com/
レスポンスヘッダのみ取得
curl -I https://www.google.com/
//
HTTP/2 200
server: nginx
date: Wed, 03 Nov 2021 02:51:50 GMT
content-type: text/html; charset=UTF-8
cookieを送信
bで可能
curl -b "hoge_session=qazwsxedcqwertyuui" https://sample.com/api/foo
グローバルIP取得
以下のコマンドで、現在インターネットに接続している_グローバルIPやタイムゾーンなどを_確認できる
※こういったサイトなどで確認するのと同義
curl ipinfo.io
POSTリクエスト例
シンプルにPOST
// -XでHTTPのリクエストメソッドを指定可能。また、リクエストデータは-dで複数指定可能
curl -X POST -d "token=XXXXXXXX" https://sample.com/api/hoge
curl -X POST -d "email=XXXXXXXX" -d "password=YYYYYYY" https://sample.com/api/login
JSONをPOST
// -H(ヘッダーオプション)をjson形式であることを明示する必要がある
curl -X POST -H "content-type: application/json" \ -d '{"category": "pasta"}' https://sample.com/
jsonファイルを指定
// @でファイルを指定できる
curl -X POST -H "content-type: application/json" \ -d @hoge.json https://sample.com/
その他のTips
ブラウザのリクエストをcURLで取得
上記では、curlコマンドを一から書いていますが、Google Chrome)のdevtoolで ブラウザが送信したリクエストをcURLのコマンドライン形式でコピーできます。これにより、シェルスクリプトとcURLを使って、リクエストの自動化が簡単に実現できます。
Networkタブ -> 右クリックCopy as cURL
ベンチマーク
curl -wでHTTPリクエストのレスポンスタイムをとることが可能です
// time\_totalの部分はいろんなパラメーターが指定できる
curl https://sample.com -w"%{time_total}\n" // 0.613465
なお、-s でダウンロード進捗の表示を消し、ダウンロードした内容は不要なので -oでdev/nullに破棄することが可能
curl https://sample.com -s -o /dev/null \ -w "%{time_total}\n"
もっと便利なツール
ここまで説明しておいてなんですが、vscodeの拡張機能Thunder Clientを使用すると、GUI上で簡単にリクエストを送信することができます
まとめ
いかがでしょうか。本記事では、curlコマンドのきほんと使用例について紹介しています。基本的なGETリクエストやPOST、cookieの送信方法などについて具体例を交えながら説明しています。頻繁に使用するものではないですが、必要な時の索引として誰かの役に立てばと思います。