最近 Web API のテストをするとき、 VS Code の拡張機能である Rest Client を多用しています。 今回はその簡単なご紹介です。
Rest Client とは
その名の通り、 Web API をたたくための VS Code の拡張機能です。 以下からダウンロードできます。
こいつのいいところはテキストファイルに投げたい HTTP リクエストを書いておける点にあります。 テキストファイルなので、 HTTP リクエストを簡単に保存しておくことができます。 また記法もそんなに難しくないので、慣れればサクサク Web API をたたけるようになります。
テキストファイルの例
Web API を呼び出すための設定は、以下のようなテキストファイルを作成します。
GET https://hogehoge.com/api/basket-items accept: text/html ### POST https://hogehoge.com/api/basket-items content-type: application/json accept: application/json { "catalogItemId": 2, "addedQuantity": 1 }
1 行目には HTTP メソッドとその URL を書きます。 2 行目以降には HTTP ヘッダーを書きます。 1行開けて、その次の行からは送信する HTTP リクエストのボディを記載します。
1 つのファイルには原則 1 つの Web API 呼び出しを書きますが、複数並べたいときは「###」で各リクエストを区切ります。 POST した結果を GET で確認する、みたいなケースは、 1 つのテキストファイルにまとまってくれていた方が作業がはかどります。
実行方法
VS Code で上記のテキストファイルを開き、送信したいリクエストにカーソルを置いて、 [Ctrl] + [Alt] + [R] で HTTP リクエストを送信できます。 するとウィンドウがもう一枚立ち上がって、以下のようにレスポンスが表示されます。
HTTP/1.1 200 OK Connection: close Content-Type: application/json; charset=utf-8 Date: Wed, 23 Mar 2022 06:54:56 GMT Server: Kestrel Transfer-Encoding: chunked { // レスポンスの JSON 文字列 }
VS Code のコマンドパレットからも実行できます。 [Ctrl] + [Shift] + [P] でコマンドパレットを立ち上げて以下のコマンドで送信できます。
>Rest Client: Send Request
Talend API Tester との比較
今まで私は「Talend API Tester」をよく使っていました。 Chrome の拡張機能なので、ブラウザー内ですべて完結するお手軽さがありました。
Talend API Tester - Free Edition - Chrome ウェブストア
しかしこのツールは、送信するリクエストを保存する作業に UI 上の癖があって、なんとなく使いにくさを感じながらだましだまし使っていました。 そんな中、新しいツールはないかと Talend API Tester と Rest Client を併用して自分なりに評価してきました。 その結果、 Rest Client を使うケースが圧倒的に多くなってしまいました。
Rest Client はインターフェースがテキストであるため、何をどこに設定すればいいか、初見殺しなところがあります。 しかし、リクエストを保存する作業は通常のファイル保存であるため癖がありません。 また API の呼び出し方を説明する時も、テキストファイルを共有すれば事足りるため、共同作業にも適しています。 それだけで移行する価値があると私は感じてしまいました。
それに対して Talend API Tester はブラウザーの拡張機能であるため、認証が必要な API を使うときお手軽に使えると思います。 ブラウザー画面内で UI を使って認証を通せば認証 Cookie が共有されるので、多くの API が認証不要で使えたりします(もちろん API によりますが)。 認証トークンの取得が不要になる場合、 Talend API Tester にも有利な点がある印象です。
まとめ
今回は VS Code から Web API のテストを行う拡張機能「Rest Client」を紹介しました。 今回は超基本的な部分だけご紹介しましたが、 Azure AD 認証ができたり、他にもいろいろ便利な機能があるようです。 詳細は公式ドキュメントを参照してください。