ブラウザでWeb APIをテストする方法 その2
- 2022年7月28日
- by SendGrid
- Category: 技術ネタ 機能・使い方
以前投稿した「ブラウザでWeb APIをテストする方法」の第二弾です。今回は、Google Chrome拡張機能「Talend API Tester」をより便利に活用するための実践的な使い方をご紹介します。
環境変数を設定する
Talend API Testerでは、キーバリュー形式の環境変数を設定することができます。APIキーなど頻繁に使う文字列を登録しておけば、毎回コピーアンドペーストする必要がなくなります。また、あるサービス(SendGridなど)のアカウントを複数持っているときに、アカウントを切り替えて同じAPIの挙動を確認する、といったことも簡単にできるようになります。
環境変数を設定するには、まず画面右上の「Add an environment」から新しい環境を作成します(下図①)。環境に任意の名前を付けたら、環境変数の名前と値を設定しましょう(下図②)。図の例では、「API_KEY」という名前でSendGridのAPIキーを設定しています。
作成した環境変数は、APIリクエストの設定画面内で ${“API_KEY”} のように ${” “} でくくって指定することで利用可能です。SendGridのAPIリクエストの場合、Authorizationヘッダに「Bearer ${“API_KEY”}」と指定すればOKです。
また、APIリクエストの内容入力欄(ヘッダ、ボディ等)は全て、カーソルを合わせるとペンマークが表示されます。それをクリックすると「EXPRESSION BUILDER」という画面が立ち上がり、登録済みの環境変数を挿入することもできます(下図)。
SendGridのAPI定義ファイルを取り込む
SendGridのAPIは、Swagger 2.0およびOpen API 3.0形式のAPI定義ファイルがGitHub上で公開されています。このファイルをTalend API Testerに取り込むことで、メソッドやURLなどAPIリクエスト設定を作成する手間を大幅に削減できます。
Talend API Testerは、Swagger 2.0やPostman Collections形式でAPIをインポートできます。ここではSwagger 2.0でインポートします。まず、GitHubリポジトリからSwagger 2.0のJSONファイルをローカルに保存します(以下のページの内容をファイルとして保存)。
https://raw.githubusercontent.com/sendgrid/sendgrid-oai/main/oai.json
{ "swagger": "2.0", "info": { "version": "", "title": "Email Activity (beta)", "description": "The Beta endpoints for the ……(略)" }, "host": "api.sendgrid.com", "basePath": "/v3", "schemes": [ "http" ], ……(略)
Talend API Testerの画面左下の「Import」をクリックしてSwagger 2.0を選択します。Project nameを適当に入力してJSONのファイルを指定し、Importします(下図)。ここでは「SendGrid Swagger」という名前にしました。
すると、JSONファイル内に定義されているAPIが全て取り込まれ、各APIの画面にメソッド、URL、クエリパラメータの一覧、リクエストボディの例が入力された状態になります。あとはAuthenticationヘッダの設定と、最低限のカスタマイズをするだけでAPIを呼び出せるようになります。
APIのレスポンスを次のリクエストで利用する
よくあるケースとして、先に呼び出したAPIレスポンスの結果を別のリクエストで使用したい場合があると思います。例えばSendGridでは、送信予約したメールをキャンセルする場合、以下の流れで各エンドポイントを呼び出します。
- キャンセル用バッチIDを生成する
- 生成したバッチIDを指定してメールの送信予約をする
- 送信予定時刻より前に、バッチIDを指定して配信キャンセルを行う
1で生成したバッチIDを2および3のリクエストパラメータとして指定する必要がありますが、バッチIDの値は毎回異なるので、2と3のリクエストパラメータを都度修正しなければなりません。Talend API Testerでは特定のAPIリクエストの特定の値を変数として指定できるので、このような手動での編集作業をなくすことができます。
まず、バッチID生成用APIリクエストを作成します(上記1)。本記事の手順通りにSwaggerをインポートしている場合は、/mail/batchの「Create a batch ID」を探してください。Authorizationヘッダを設定してリクエストを送信してみましょう。すると、レスポンスに”batch_id”が含まれるJSONが返ってきます。
次に、メールの送信予約をします(上記2)。前回のMail Send APIのリクエスト例に、以下のようにbatch_idとsend_atの2つのパラメータを足します。
{ "personalizations": [ { "to": [ { "email": "john@example.com" } ], "subject": "Hello, World!" } ], "from": { "email": "from_address@example.com" }, "content": [ { "type": "text/plain", "value": "Hello, World!" } ], "batch_id": "", "send_at": 1658216414 }
send_atは送信時刻で、72時間以内の未来の時刻をUNIXタイムスタンプで指定します。batch_idには2つのダブルクォーテーション「””」を入力します。2つのダブルクォーテーションの間にカーソルを合わせ、右下のペンマークをクリックして「EXPRESSION BUILDER」を開きましょう。この画面上で、先ほど実行した「Create a batch ID」のリクエストを選択します。Swaggerをインポートした場合は、「SendGrid Swagger」>「/mail/batch」>「Create a batch ID」と選べばOKです。レスポンスボディの”batch_id”を指定したいので、さらに「response」>「body」>「batch_id」と選んでいきます。すると、画面下の「Preview」に先ほど取得したバッチIDが表示されます。この状態で「Insert」ボタンを押すと、”batch_id”: “${“SendGrid Swagger”.”/mail/batch”.”Create a batch ID”.”response”.”body”.”batch_id”}”のように変数が入力されます。これでリクエストすると送信予約が完了します。
最後に、送信予約をキャンセルします(上記3)。キャンセル用のAPIは「/user/scheduled_sends」の「Cancel or pause a scheduled send」です。ここでもリクエストボディ内にキャンセルしたいbatch_idを指定するので、上と同じ手順でバッチID作成APIのレスポンスボディのbatch_idを挿入します。また、statusにはcancelを指定します。このリクエストを送信すると、メール送信予約はキャンセルされます。
{ "batch_id": "${"SendGrid Swagger"."/mail/batch"."Create a batch ID"."response"."body"."batch_id"}", "status": "cancel" }
複数のAPIリクエストを連続的に行う
上記の送信予約キャンセルは3回のリクエストをそれぞれ実行する必要がありましたが、「Scenario」という機能を使えば一連のAPIの呼び出しを自動的に行うことができます。実際に送信予約キャンセルの流れを自動で行ってみましょう。
まず画面上部のScenariosタブを選び(下図①)、MY DRIVE配下の「SendGrid Swagger」フォルダ名の右に表示される縦三点リーダから「add a scenario」を選択して適当な名前をつけます。ここでは「送信予約キャンセルScenario」としています。その後、作成したscenario配下に、上記で用いた3つのAPIリクエストをコピーします。コピー時に名前を指定できるので、それぞれ「バッチID作成」「メール送信」「送信予約のキャンセル」としました(下図②)。
リクエストボディ内のbatch_idの変数は、scenario配下にコピーしてきたバッチID生成リクエストのものに指定し直します。上で述べた名前で言うと、以下のように変更することになります。
"batch_id": "${"SendGrid Swagger"."送信予約キャンセルScenario"."バッチID作成"."response"."body"."batch_id"}"
あとは、画面上部の再生(Launch)ボタンを押して緑色のチェックマークがつけば、一連のAPIリクエストは成功です(下図③)。
Talend API Testerの応用的な機能を紹介しました。Google Chromeの拡張機能としてワンクリックで導入できる手軽さにもかかわらず、Postmanなど他のツールにも負けない多彩な機能を持っています。今回紹介した以外にもアサーション機能(リクエストの内容を検証する機能)などもあるので、ぜひチェックしてみてください。