APIの動作確認でよく使うツール3選
はじめに
Web APIを作ったときに動作確認のために使っているツール3種類についてのお話です。
各ツールで同じGETリクエストをするとそれぞれどんな風に結果を確認できるのか、
個人的に感じた使い勝手と使い方をメモ程度にという感じです。
使用するAPI
お天気情報APIのOpen Weather Mapを使います。
登録するだけでAPIキーが手に入り、無償で使えます。
今回はGETまたはPOSTで指定した郵便番号の天気を教えてくれる機能を使います。
Сurrent weather and forecast - OpenWeatherMap
リクエスト例)
http://api.openweathermap.org/data/2.5/weather?zip=100-0005,jp&units=metric&lang=ja&APPID=<個人のAPIキー>
Postman
GUIでAPIテストができるツールです。
かなりメジャーな部類なので、詳しい使い方の情報はたくさんあります。
GETリクエストをするとこんな感じです。
返ってくるJSON形式も整形されていて分かりやすいです。
今回の題材では不要ですが、
もしCookieの情報が必要だったり、POSTの時に引数を渡す必要があるときもGUIなので直感的に設定できます。
ひとつのAPIを手軽に確認したいときやCrome DevToolsに近い形で情報が見たいときなどに使ってます。
Visual Studio CodeのREST Client機能
Visual Studio Codeの拡張機能のひとつであるREST Clientを使います。
詳細は下記サイト様がわかりやすいです。
VS Code上でHTTPリクエストを送信し、VS Code上でレスポンスを確認できる「REST Client」拡張の紹介 - Qiita
使い方としては、httpファイルをVS Codeで開きます。
[Send Request]ボタンをクリックすると、VS Code上でレスポンスが確認できます。
こちらもJSONが整形されていて見やすいですね。
###で区切ることができるので、 複数のリクエストをひとつのファイルにまとめることができます。
当然コメントも入れられます。変数設定もできます。引数も渡せます。
複数のAPIをテンポよく確認したいときやチームメンバー複数人でテストするときに使っています。
ただ、VS Code REST Client上だとエラーになるけどPostmanだと動く、というようなことがたまーにあるので、念のため Postmanも使えるようにはしています。
今回の題材のお天気APIを使う 簡単なhttpファイルはgithubにあげてます。
GitHub - kgnk-hkr/WeatherAPI_HTTPTest_http
curlコマンド
黒い画面好きとしては一番馴染み深くとっつきやすいです。
レスポンスによっては文字化け対策をする必要があります。
結果がUTF-8で返ってくるなら下記のコマンドを先に実行しておきます。
>chcp 65001
上記のままだと整形されていなくて非常に見づらいです。
これを避けるためにjqを使えるようにします。
https://stedolan.github.io/jq/
上記よりjq-win64.exeをダウンロードしてきたらファイル名をjq.exeに変更して「C:\windows\system32」に格納します。
コマンド実行時に、末尾に「| jq」を付けます。
ただし、オプション-i、-Iとの併用はできないのでHTTPレスポンスヘッダーの取得結果も欲しい場合は工夫が必要です。
Cookieの情報が必要な時はオプション-bを付けます。
参考サイト様
curl の -b, -c (--cookie, --cookie-jar) オプションが便利 - ryota-ka's blog
例) curl -I -b test=AAAA -X GET "https://localhost:5000/api"
その他の細々したオプションは下記サイト様がまとまっています。
問題はPOSTです。
引数をJSON形式で渡してリクエストを送ろうとするとBad Request地獄に落ちました。
文法は間違っていないのになぜなぜとなっていたところ、
下記サイト様で解決しました。本当にありがとうございました。
Windows版curlでJSONをPOSTする際に困った話 - Qiita
私はWindows環境だったので、-dオプションの後ろの「"」を「¥"」に変更したらうまくいきました。
例) curl -i -X POST https://localhost:5000/api/ -H "Content-Type: application/json" -H "Accept: application/json" -d "{¥"test1¥":[{¥"test1¥": 0}], ¥"test2¥":1, ¥"test3¥":¥"aaa¥"}"
さらに、curlを使えば複数のAPIテストをbatファイルでまとめて実行できるしログもとれる! 素晴らしい。
(Postman、VSCodeでのログの取り方を知らないだけです。すみません。
今回の題材のお天気APIを使う簡単なbatファイルはgithubにあげてます。 (例外処理的なものは含んでいないのでお試し程度に…
GitHub - kgnk-hkr/WeatherAPI_HTTPtest_bat
おわりに
今回は普段私がAPI開発の時に動作確認に使っているツールのお話でした。
本当はそれぞれの使い方をもう少し掘り下げて3本立てにしたかったのですが、そこまでの理解度に至らず…
もう少し使いこなせるようになったらまた掘り下げます。