前回の記事ではPostman Flowsを用いたFlows Query Language (FQL) によるJSONデータの処理を行いました。
https://qiita.com/KameMan/items/e4e6eb24f8c690145ec8
JSONデータはRecordブロックを使って流し込んだため、本来の用途ではなくあくまでテスト目的です。Postman Flows はAPI駆動のワークフローエンジンであるため、APIコールの結果レスポンスとして戻ったJSONボディを受け取り次の処理に進めることが想定された利用目的です。
このため、今日はテスト用APIをCloudflare Workers を用いて構築します。
Cloudflare Workers の準備
Cloudflare Workers はCloudflareが提供するサーバレスなエッジコンピューティングサービスです。Javascript / Typescriptを活用して様々な処理を実装できます。AWS Lambda と異なり、軽量であること、デフォルトでHTTPエンドポイントが存在しておりブラウザからのテストが簡単であること、永続性ストレージサービスが備わっていること、などがあげられます。
https://zenn.dev/kameoncloud/articles/1fac9762aab4ec
等を参考に簡単なHello Worldを構築します。
その後Workerのスクリプトを以下に置換してDeployします。
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
const data = {
message: 'Hello, world!',
timestamp: new Date().toISOString()
}
return new Response(JSON.stringify(data), {
headers: { 'Content-Type': 'application/json' }
})
}
ブラウザでアクセスすると以下のJSONが戻ります。
{"message":"Hello, world!","timestamp":"2024-08-07T06:37:04.815Z"}
Postman Collection の設定
Postman Flowsで設定可能なAPIコールはあらかじめPostman Collectionとして登録されている必要があります。
コレクションから新規
ボタンをクリックします。
HTTP
を選択します。
WorkerのURLを入力して送信ボタンを押します。
ResponseのJSON Body を正しく受信していることがわかります。
保存
ボタンを押してこのAPIコールを保存します。
適当な名前でSave
します。
次にフローの画面で新規
ボタンを押します。
次はフロー
を選びます。
Send a request
をクリックします。
先ほど作成されたコレクションを選択します。
Run
ボタンをクリックすると値が戻ってきます。
Evaluate ブロックの接続
これで前回の記事で触れたRecordブロックと同じ枠割を果たすAPIコールが作成できましたのでEvaluateブロックを接続し、body
を選択します。
FQLでvalue1
と入力すると正しくAPIコールで戻ったJSON ResponseをEvaluate ブロックが受け取っていることがわかります。
value1.message
と入力するとmessage
要素だけを抜き出してくれます。
この値はResult
として出力されますのでさらに次のAPIコールやブロックに渡すことが可能です。
変数の操作
value1
がEvaluateブロックのResult
とつながってくれません。これは受け取り側のvalue1
がString型(Aa
)となっているためです。Select型にすると受け取ることができます。
もう一つ方法があり、変数を使う方法です。その場合、変数を作成し一度変数にその値を格納する必要があります。
まずは2つ目のAPIをhttps://requestcatcher.com/という神サイトで作っておきます。
そして以下のようなコレクションを作成し保存しておきます。
この時点ではmessage
変数を認識していません。ここで 環境 の出番です。
シンプルにmessage
という変数を作成して保存しておきます。
新しい環境
という場所に変数が保存されたことに注目してください。
次にコレクションの画面に戻り、新しい環境
を選択します。
message
という変数を正しく認識しています。
EvaluateブロックのResult
と2つめのAPIコールのmessage
がくっつきました!
RequestCatcherの画面では値が正しくPOSTされたことがわかります。
GET /?message=Hello%20World%20! HTTP/1.1
Host: postmanflow.requestcatcher.com
Accept: */*
Accept-Encoding: gzip, deflate, br
Cache-Control: no-cache
Connection: keep-alive
Postman-Token: 0e8a65e1-b751-43d0-ad98-c7681623b3a4
User-Agent: PostmanRuntime/7.39.0