はじめに
こんにちは!
APIの検証でお世話になっているcurl
コマンド。
みなさんはどのくらい使いこなしているでしょうか。
私もよく使うのですが、おそらく、ほんの一部の機能しか使ってません。
そこで、今回は、man curl
の内容からピックアップしてご紹介しようと思います。
man curl
の情報量
Linuxユーザーなら一度は使ったことのあるman
コマンドでcurlの説明がどのくらいあるのか、確認してみます。
$ man curl | wc -l
6365
6千行、、ちょっとした書物ですね。
多すぎるので、ざっくり見て、幾つかピックアップします。
基礎編: Webアクセス系
1. curlの最も基本的な使い方
$ curl https://www.example.com
2. ファイルをダウンロード(結果を保存)
-o
オプションで指定したファイルにWebページの内容を保存。
$ curl -o index.html https://www.example.com
3. HTTPヘッダーを取得
-I
オプションでHTTPヘッダー情報のみを取得。
$ curl -I https://www.example.com
4. リダイレクトを追跡
-L
オプションでリダイレクト (301, 302など) を自動的に追跡。
$ curl -L https://www.example.com/redirect
応用編: リクエスト系
5. POSTリクエストを送信
-d
オプションでPOSTリクエストを送信。
$ curl -d "name=value&another=anothervalue" https://www.example.com/api
6. 特定のHTTPメソッドを指定
-X
オプションでGETやPOST以外のHTTPメソッド (PUT, DELETE, PATCHなど) を使用。
$ curl -X PUT -d "data=updated" https://www.example.com/api/resource
7. カスタムヘッダーを送信
-H
オプションでHTTPリクエストにカスタムヘッダーを追加。
$ curl -H "User-Agent: MyCustomAgent" https://www.example.com
8. フォームデータを送信
-F
オプションでmultipart/form-data形式のデータを送信。 (ファイルアップロードなど)
$ curl -F "file=@image.jpg" https://www.example.com/upload
9. クッキーを扱う
-b
オプションでクッキーを送信し、 -c
オプションでクッキーを保存する。
$ curl -b cookie.txt -c cookie.txt https://www.example.com
10. HTTP/2を使用
--http2
オプションでHTTP/2プロトコルを使用する。
http通信などで使うと、高速化されていいらしい。
$ curl --http2 https://www.example.com
実践編: ネットワーク状況を把握 & デバッグ
11. 接続時間を制限
--connect-timeout
オプションで接続タイムアウトを設定。
$ curl --connect-timeout 5 https://www.example.com
12. 転送速度を制限
--limit-rate
オプションで転送速度を制限。
1Bなどにすると、途中で止まります。
$ curl --limit-rate 100K https://www.example.com
13. 転送状況を詳細に表示
-v
オプションで詳細な転送状況を表示。 (ヘッダー情報、接続情報など)
たまに見ると面白いです。
$ curl -v https://www.example.com
14. トレースログを出力
--trace
オプションで送受信データを含む詳細なトレースログをファイルに出力。
$ curl --trace trace.log https://www.example.com
15. ネットワークインターフェースを指定
--interface
オプションで使用するネットワークインターフェースを指定。
一度だけ使った気がする。(詳細は覚えてないです)
$ curl --interface eth0 https://www.example.com
16. DNSサーバーを指定
--dns-servers
オプションで使用するDNSサーバーを指定。
$ curl --dns-servers 192.168.0.1,192.168.0.2 https://example.com
上級編: curlをさらに使いこなす
17. コマンドライン変数を使う
--variable
オプションで変数を定義し、 --expand-
プレフィックス付きのオプションで参照。
$ curl --variable token=my_secret_token --expand-header "Authorization: Bearer {{token}}" https://api.example.com
18. curlコマンドをC言語のコードに変換
--libcurl
オプションで、curlコマンドをC言語のlibcurl関数を使ったコードに変換。
こちら、確かにC言語で出力されました。
$ curl --libcurl example.c https://www.example.com
19. 外部コマンドと連携
|
(パイプ) や >
(リダイレクト) を使って、curlの出力を他のコマンドに渡したり、ファイルに保存したりできる。
# curlの出力をgrepでフィルタリング
$ curl https://www.example.com | grep "keyword"
# curlの出力をファイルに保存
$ curl https://www.example.com > output.txt
20. 設定ファイルを使う
-K
オプションで設定ファイルを読み込み、curlの動作をカスタマイズ。
$ curl -K config.txt https://www.example.com
まとめ
curlは奥が深いですね、、、
今回は、curlコマンドの基本的な使い方から応用編までご紹介しました。
curlを使いこなすと、作業効率がかなりアップします。
マスターすると、検証が非常に楽になりそうです。
私もまだ道半ばですが、みなさんも一緒にがんばりましょう!