やりたいこと
curlコマンドを使って、APIのリクエストにかかった時間のみを表示させたい。
結論
これらの情報は-wオプションで取得することができ、以下のように記述する。
■フォーマット
curl -XGET "リクエストURL" -w '%{time_total}\n' -s -o /dev/null ■実行例
# 全体の処理にかかった時間(秒)を出力する
$ curl -XGET "https://httpbin.org/get" -w '%{time_total}\n' -s -o /dev/null
0.869915 解説
-wオプション
-wオプションは-write-outオプションと同義で、API通信時のさまざまな情報を出力できるオプション。
%{}で囲むことで、以下のような情報を出力することができる。
このとき、出力結果が改行されないので\nを最後に指定している。
| 値 | 説明 |
|---|---|
| json | -wオプションで指定できるフィールドとその値一覧をJSON形式で出力するこれを見れば何が指定できるかわかる |
| http_code | ステータスコード |
| size_request | HTTPリクエストの全体のバイト数 |
| size_download | レスポンスヘッダーを除いたレスポンスボディのバイト数 |
| size_header | レスポンスヘッダーのバイト数 |
| time_total | リクエストにかかった全体の時間(秒) |
-o /dev/null
-oオプションは-outputと同義。
ファイル名を引数に取り、通常はデータのファイル保存に利用するが
今回の場合は/dev/nullに出力し、「レスポンスボディを表示しない」という使い方をしている。
-sオプション
--silentと同義。
curlコマンドのプログレスバーを表示しないようにする。
# オプションなし
$ curl -XGET "https://httpbin.org/get" -w '%{time_total}' -o /dev/null
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 256 100 256 0 0 310 0 --:--:-- --:--:-- --:--:-- 313
0.825680
# オプションあり
$ curl -XGET "https://httpbin.org/get" -w '%{time_total}' -o /dev/null -s
1.049219 まとめ
-
-w:特定のフィールドを出力 -
-s:プログレスバーを表示しない -
-o:取得したデータをファイル保存する