【Linux】APIのレスポンス差分をサクッと確認したい

httpのイメージ画像 シェルスクリプト

やりたいこと

手っ取り早く似たようなAPIのレスポンス同士を比較したい。

  • https://jsonplaceholder.typicode.com/users/1
  • https://jsonplaceholder.typicode.com/users/2

私のベストアンサー

  1. curlコマンドでAPIリクエスト
  2. jqコマンドで整形し、ファイル出力
  3. 2つのファイル差分をvimdiffコマンドで差分チェック

前提

前提条件としてjqコマンドを使えるようにしておく必要がある。

Macの人で、Homebrewが利用できれば下記コマンドでインストール可能。

$ brew install jq

1.2つのjsonをファイルとして吐き出す

$ curl -XGET "https://jsonplaceholder.typicode.com/users/1" | jq . --sort-keys > old.json

$ curl -XGET "https://jsonplaceholder.typicode.com/users/2" | jq . --sort-keys > new.json

.」がルートの「{}」を示す。
また、--sort-keysはキーをソートしてくれる。

そのため「jq . --sort-keys」とすることで、「ルートを基準にキー名でソート」となる。

>でold.jsonもしくはnew.jsonファイルに標準出力の内容を上書き保存している。

2.vimdiffコマンドで比較する

$ vimdiff old.json new.json

私が一旦ファイル出力するのは、vimdiffコマンドを利用するためである。

こちらの記事で解説しているが、標準のdiffコマンドはあまりスマートに差分を見ることができない。
Macであればvimdiffは標準搭載されているので、こちらを使うのが個人的にはおすすめ。

出力結果のサンプル
出力結果

まとめ

  • 「curl + jq + vimdiff」が私のベストベストアンサー
  • 2回目のAPIリクエストはCtrl + pからのCtrl + w活用すると指の動きをもう少し高速化できる
  • あくまでも簡易比較なので、もっとしっかり比較したいのであればスクリプトを書く方が楽かも
タイトルとURLをコピーしました