やりたいこと
curlコマンドを使って、APIのリクエストにかかった時間のみを表示させたい。
結論
これらの情報は-w
オプションで取得することができ、以下のように記述する。
# 全体の処理にかかった時間(秒)を出力する
$ 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
:取得したデータをファイル保存する