エンジニアを目指す初学者に向けて、わかりやすく解説したブログです。
サイトをリニューアルしました

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

やりたいこと

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:取得したデータをファイル保存する