オンプレ系インフラエンジニアがAzureを勉強する

いつか誰かの何かの役に立つと嬉しいな

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

GUIAPIテストができるツールです。
かなりメジャーな部類なので、詳しい使い方の情報はたくさんあります。

GETリクエストをするとこんな感じです。

返ってくるJSON形式も整形されていて分かりやすいです。

f:id:mitsunooon:20200828220017j:plain

 

今回の題材では不要ですが、

もしCookieの情報が必要だったり、POSTの時に引数を渡す必要があるときもGUIなので直感的に設定できます。

f:id:mitsunooon:20200828220816j:plain

f:id:mitsunooon:20200828220828j:plain

 

ひとつのAPIを手軽に確認したいときやCrome DevToolsに近い形で情報が見たいときなどに使ってます。

 

Visual Studio CodeのREST Client機能

Visual Studio Code拡張機能のひとつであるREST Clientを使います。

詳細は下記サイト様がわかりやすいです。

VS Code上でHTTPリクエストを送信し、VS Code上でレスポンスを確認できる「REST Client」拡張の紹介 - Qiita

f:id:mitsunooon:20200828220923j:plain

 

使い方としては、httpファイルをVS Codeで開きます。

[Send Request]ボタンをクリックすると、VS Code上でレスポンスが確認できます。

こちらもJSONが整形されていて見やすいですね。

f:id:mitsunooon:20200828221333j:plain

f:id:mitsunooon:20200828221342j:plain

 

###で区切ることができるので、 複数のリクエストをひとつのファイルにまとめることができます。

当然コメントも入れられます。変数設定もできます。引数も渡せます。

 

複数のAPIをテンポよく確認したいときやチームメンバー複数人でテストするときに使っています。

ただ、VS Code REST Client上だとエラーになるけどPostmanだと動く、というようなことがたまーにあるので、念のため Postmanも使えるようにはしています。

今回の題材のお天気APIを使う 簡単なhttpファイルはgithubにあげてます。

GitHub - kgnk-hkr/WeatherAPI_HTTPTest_http

 

curlコマンド

コマンドプロンプトで手軽に試せるcurlコマンドです。

黒い画面好きとしては一番馴染み深くとっつきやすいです。

f:id:mitsunooon:20200828221749j:plain

 

レスポンスによっては文字化け対策をする必要があります。

結果がUTF-8で返ってくるなら下記のコマンドを先に実行しておきます。

>chcp 65001

 

上記のままだと整形されていなくて非常に見づらいです。

これを避けるためにjqを使えるようにします。 

https://stedolan.github.io/jq/

 

上記よりjq-win64.exeをダウンロードしてきたらファイル名をjq.exeに変更して「C:\windows\system32」に格納します。

コマンド実行時に、末尾に「| jq」を付けます。

ただし、オプション-i、-Iとの併用はできないのでHTTPレスポンスヘッダーの取得結果も欲しい場合は工夫が必要です。

f:id:mitsunooon:20200828222140j:plain

 

Cookieの情報が必要な時はオプション-bを付けます。

参考サイト様

curl の -b, -c (--cookie, --cookie-jar) オプションが便利 - ryota-ka's blog

 例) curl -I -b test=AAAA -X GET  "https://localhost:5000/api"

 

その他の細々したオプションは下記サイト様がまとまっています。 

よく使うcurlコマンドのオプション - Qiita

 

問題は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本立てにしたかったのですが、そこまでの理解度に至らず…

もう少し使いこなせるようになったらまた掘り下げます。