Postmanを使ってWeb APIにアクセスする その2

Postmanを使ってWeb APIにアクセスする その2

Postmanを使ってWeb APIにアクセスする」後編の今回は、少し応用的な以下の内容についてご紹介します。基本的な使い方は前編をご覧ください。

Postmanの環境変数を利用する

Postmanではキーバリュー形式の環境変数を利用できます。環境変数を利用すると、例えばあるサービス(Twilio SendGridなど)の複数アカウントを切り替えて同じエンドポイントにアクセスして挙動を確認する、といったことが簡単にできます。

環境変数を設定するには、画面左のEnvironmentsタブCreate Environmentを選択します。

EnvironmentsタブでCreate Environmentを選択

環境名を入力し、環境変数名とその値を入力します。以下の例では、Test Environmentという環境の配下に「apiKey」という環境変数を作成し、その値(CURRENT VALUE)に「Bearer SendGridのAPIキーの値」を入力しています。また、APIキーは機密情報であるため、TYPEsecretにしています(入力値がマスク表示されます)。入力が完了したらSaveを選択して保存し、ボタンを選択してリクエスト生成画面を開きます。

環境名を入力し、環境変数名とその値を入力
Saveを選択して保存し、+ボタンを選択してリクエスト生成画面を開く

それでは作成した環境変数を使用してみましょう。
画面右上で、使用する環境名(今回はTest Environment)を選択し、Authorizationタブで以下のように設定します。

  • TypeAPI Keyを選択
  • Key:「Authorization」を入力
  • Value:「{{apiKey}}」を入力

環境変数はこのように「{{ }}」で囲って使用します。

使用する環境名(今回はTest Environment)を選択し、Authorizationタブで以下のように設定

これで、リクエスト発行時に環境変数が実際の値に置換されるようになります。本番用、テスト用、デモ用など環境を切り替えて同じリクエストを呼び出すのに便利です。

SendGridのAPI定義ファイルをPostmanで取り込む

SendGridのAPIは、Swagger 2.0およびOpen API 3.0形式のAPI定義ファイルがGitHub上で公開されています。このファイルをPostmanにインポートすることで、APIリクエスト設定を作成する手間を大幅に削減できます。

まず、GitHubのリポジトリからAPI定義ファイルをダウンロードします。今回は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 new Email Activity APIs - functionality is subject to change without notice. You may not have access to this Beta endpoint.\n\nEmail Activity offers filtering and search by event type for two days worth of data. There is an optional add-on to store 60 days worth of data. This add-on also gives you access to the ability to download a CSV of the 60 days worth of email event data. The Beta endpoints for the new Email Activity APIs - functionality is subject to change without notice. You may not have access to this Beta endpoint.\n\nEmail Activity offers filtering and search by event type for two days worth of data. There is an optional add-on to store 60 days worth of data. This add-on also gives you access to the ability to download a CSV of the 60 days worth of email event data."
    },
    "host": "api.sendgrid.com",
    "basePath": "/v3",
    "schemes": [
        "http"
    ], ……(略)

次にPostmanの画面左上のImportボタンを選択します。

Importボタンを選択

Choose Filesから、先ほどローカルに保存した定義ファイルをアップロードします。Import Elements画面でImportを選択し、その後Import completeと表示されたら取り込み成功です。
これだけで全APIの定義を一括でインポートでき、画面左のAPIsから一覧を確認できます。認証情報とAPIのリクエストパラメータの調整を行えばすぐに利用可能です。

Choose Filesから、先ほどローカルに保存した定義ファイルをアップロード
Import Elements画面でImportを選択
Import completeと表示されたら取り込み成功

APIのレスポンスを次のAPIリクエストで利用する

先に呼び出したAPIのレスポンスを別のAPIリクエストで使用したい場合があります。例えばSendGridでは、送信予約指定したメールをキャンセルする場合、以下の手順で各エンドポイントを呼び出します。

  1. キャンセル用Batch IDを生成する
  2. 生成したBatch IDを指定してメールの送信予約(send_atの指定)をする
  3. 送信予定時刻前に、Batch IDを指定して配信キャンセルを行う

1で生成したBatch IDを2および3のリクエストパラメータとして指定する必要がありますが、Batch IDの値は毎回異なるので、2と3のリクエストパラメータを都度修正しなければなりません。Postmanでは特定のAPIリクエストの特定の値を変数として指定できるので、このような手動での編集作業をなくすことができます。

まず環境変数を作成します。今回は「batch_id」という名前にしました。この変数にはBatch ID生成エンドポイントで生成したBatch IDを格納するので、現時点ではCURRENT VALUEは空のままにしておきます。

batch_idという環境変数をCURRENT VALUEは空で作成

次に、Batch ID生成エンドポイントのAPIリクエスト設定を作成します。Authorizationタブで認証情報の設定を行うのを忘れないでください。設定が完了したらTestsタブを選択します。TestsタブではAPIリクエスト後に実行するスクリプトを書くことができます。

Batch ID生成エンドポイントのAPIリクエスト設定

ここでは以下のスクリプトを入力します。これはレスポンスボディに含まれるbatch_idの値を取り出して、先ほど作成した環境変数のbatch_idに格納する内容です。

var data = JSON.parse(responseBody);
postman.setEnvironmentVariable("batch_id", data.batch_id);

ここまで完了したら、Sendボタンを選択してBatch ID生成のAPIリクエストを実行してみましょう。Status201 CREATEDとなったらリクエスト成功です。レスポンスボディでBatch IDが返ってきていることを確認します。

Sendボタンを選択してリクエストを発行

Testsタブに入力したスクリプトにより、生成されたBatch IDは環境変数batch_idに格納されています。Test Environmentタブから、取得したBatch IDがbatch_idCURRENT VALUEに格納されていることを確認しましょう。

Test Environmentタブから、取得したBatch IDがbatch_idのCURRENT VALUEに格納されていることを確認

あとはメール送信リクエスト配信キャンセルリクエストのbatch_idパラメータで{{batch_id}}と指定すれば、環境変数を参照したリクエストが実行できます。

メール送信リクエストで環境変数のbatch_idを参照
配信キャンセルリクエストで環境変数のbatch_idを参照

これら3つのリクエストを順に実行することで、冒頭に書いた一連の流れをPostmanで楽に実現できます。それぞれの動作確認ができたら次の節で紹介するRunner機能のために、各APIリクエスト設定を一つのコレクションに保存しておきましょう。
リクエスト設定画面の右上にあるSaveを選択すると、保存するCollectionを選択する画面が表示されます。左下のNew Collectionを選択してコレクション名を入力したら、Createを選択します。APIリクエスト設定につける名前をRequest nameに入力してSaveします。同様に残り2つのリクエストを保存しましょう。

Saveを選択
New Collectionを選択
コレクション名を入力しCreateを選択
Request nameに入力してSave
作成したコレクション内に3つのリクエスト設定が保存されている

Runner機能を利用して一連のAPI呼び出しを自動的に行う

前節でご紹介した手順では、配信をキャンセルするために複数のエンドポイントを決まった順番で呼び出す必要がありました。Postmanには複数のAPIリクエスト設定を順番に呼び出してくれるCollection Runnerという機能があります。この機能では呼び出し回数や間隔を指定して繰り返し呼び出す、といった使い方もできます。

Collection Runner機能を利用するには、作成したコレクションの横三点リーダからRun collectionを選択します。RUN ORDERでリクエストをドラッグして実行順を設定したら、Runを選択して一連の呼び出しを実行します。完了すれば実行結果が一覧表示されます。複雑なAPI呼び出しも一度設定すれば何度でも実行できるので、とても便利です。

横三点リーダからRun collectionを選択
RUN ORDERでリクエストをドラッグして実行順を設定し、Runを選択して一連の呼び出しを実行
実行結果が一覧表示される

Postmanの機能を2回にわたりご紹介しました。もともとPostmanは、APIの開発を支援するサービスです。今回は紹介しませんでしたが、モックサーバ機能やAPIドキュメントの生成機能など、API自体やAPIにアクセスするライブラリを開発するための機能も充実していますので、ぜひチェックしてみてください。

アーカイブ

メールを成功の原動力に

開発者にもマーケターにも信頼されているメールサービスを利用して、
時間の節約、スケーラビリティ、メール配信に関する専門知識を手に入れましょう。