【Linux】curlコマンドでAPIのリクエストにかかった時間を取得する

httpのイメージ画像 HTTP

やりたいこと

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_requestHTTPリクエストの全体のバイト数
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:取得したデータをファイル保存する
タイトルとURLをコピーしました