Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Postman Flowsの基本 / Postman Flows Basics

Postman Flowsの基本 / Postman Flows Basics

Slides for:
- Event Drinven Architecture Multi Vendor ワークショップ at https://serverless.connpass.com/event/342157/

概要
これはPostman Flowsの基本をカバーする資料です。Postman Flows は、画面上でAPIのブロックをつなげることでワークフローの作成やアプリ連携、作業の自動化を行うことができる、APIプラットフォーム Postman で利用できるビジュアルツールです。

https://www.postman.com/product/flows/

Yoichi Kawasaki

February 08, 2025
Tweet

More Decks by Yoichi Kawasaki

Other Decks in Technology

Transcript

  1. Postman Flowsとは? API中心のアプリ(ワークフロー) を構築するためのビジュアルエディターです • 複数のAPIの連携、データの加工、出力結果の可視化など一連のアクションの自動化 ◦ サービス連携処理、自然言語処理、DevOps処理、など • 既存のコレクションにある

    APIリクエスト設定や環境 Environment)を活用可能 • フロー用のWebhookエンドポイントを公開して、外部からフローをトリガー可能 • 公開済みフローを自分のワークスペースにフォークやコピーして利用できる ベータリリース 2025.02時点)
  2. Flows 2大コンセプト: ブロックとコネクション ブロック Blocks ブロックでは情報作成、決断、アクション実行などができ る。各ブロックには入力・出力口(いづれか or 両方)があ りコネクションで複数ブロックを連携させることができる

    コネクション Connections) コネクションはブロック同士を相互作用させる方法。あるブ ロックの出力から別のブロックの入力にコネクションをドラッ グすることで、結合先ブロックに情報を渡したり実行させた りすることができる @postman_japan
  3. ブロックの種類 Postman Flows Block https://learning.postman.com/docs/postman-flows/reference/blocks-list/ アクション SendRequest リクエスト送信 Create with

    AI BETA AIモデルを活用して出力 を生成 Delay 指定した時間待つ トリガー Start フローを開始 意思決定 If FQL/TypeScriptを使用して データを true/false別の出 力に分岐 Evaluate FQL/TypeScriptを使用して データ取得・操作を行う 繰り返し Collect ループの結果を収集 For 要素リストをループ Repeat 指定した回数ループ 出力 Output 受信データを表示し、後続 ブロックに転送 Log Postmanコンソールにロ グ出力 その他 Group ブロックをグループ化 情報 String テキスト文字列を出力 Bool true/falseを出力 Number 数値を出力 Null null値を出力 Regex 正規表現文字列を出力 Select 入力の特定部分を選択 Now 現在日時を出力 Date 指定日付を出力 Date & Time 指定日時を出力 List 順序付きリストを出力 Record 名前付きデータ出力 Create Variable 新しい変数作成 Get Variable 変数の値を出力 Template テンプレート出力 @postman_japan
  4. フローの公開 Publish)と実行 2/2 フロー公開後、そのフローのライブログを確認することができます 「・・・」メニュー > [view published version] >

    View Live log] フロー公開後の注意点 • 公開後にフローに変更を加えたら、再公開Publish]しない限りクラウドに反映されません • 関連するコレクションと環境に変更を加えた場合も再公開が必要になります(フロー公開毎に Postmanは関連コレクションと環境変数・コレクション変数情報をセットで保存します。なお、グローバ ル変数はセットで保存されないので注意)
  5. フローの整理: 色、注釈、グループ化 色、注釈、グループ化を活用してすることでフローを整理し、見通しやすくできます https://learning.postman.com/docs/postman-flows/concepts/organizing-a-flow/ ブロック左上隅のペイントアイコンから 設定 色 注釈 グループ化 ツールバーの「テキストの追

    加」ボタンを押して追加 Shift キーを押しながらカーソルをブロックの セットの周囲にドラッグするか、 ⌘またはCtrl を押したまま追加するブロックを選択。ファイル アイコンを選択するとグループが作成される @postman_japan
  6. Postmanモニターについて Postmanモニターを使うと、関連付けられたコレクションのリクエストを定期的に実行して、APIの健全性と パフォーマンスを継続的にチェックできます 参考情報 https://learning.postman.com/docs/monitoring-your-api/setting-up-monitor/ Postmanモニターでできること • コレクションごとにモニターを設定 • テスト実行頻度

    ◦ 5分毎〜設定可能。ただし無料プランは一時間毎〜 • テスト実行リージョン選択 ◦ 複数リージョンからの APIテスト実行が可能 • スタティックIPを持つモニター指定 ◦ 要Professional / Enterpriseプラン • アラート通知設定 ◦ メール通知、or インテグレーション設定 でslack、 PagerDutyなど他チャンネルへの通知も可能 • リトライ、タイムアウトなど設定可能 @postman_japan
  7. FQL - 値の取得 FQLでは、ロケーションパス構文を使用してJSON構造から値を抽出する Get basic values in FQL https://learning.postman.com/docs/postman-flows/flows-query-language/getting-basic-values/

    トップレベル フィールドの値 name ネストされたフィールドの値 address.city 配列の特定インデックスの値 phone[0.number 配列内の全オブジェクトの特定フィールドの値 phone.number ["1234567890","0987654321"] "1234567890" "John Smith" "Atlanta" ⇒ ⇒ ⇒ ⇒ @postman_japan
  8. FQL - 条件付きデータの取得 FQL を使用して、特定のデータをフィルターできます。該当データが複数ある場合は配列で、単一の場合 はは単一のレコードとして返却されます 特定キー・値ペアのオブジェクトをフィルター payments[description="recurring subscription"] フィルターされたオブジェクトの特定フィールド値取得

    payments[description="recurring subscription"].invoice_number [ { "invoice_number": "101301", "date": "20220911T161234.494Z", "description": "recurring subscription", "amount": 110.48 }, { "invoice_number": "101303", "date": "20221011T161234.683Z", "description": "recurring subscription", "amount": 110.48 } ] ⇒ ["101301","101303"] ⇒ Select conditional data in FQL https://learning.postman.com/docs/postman-flows/flows-query-language/conditional-data-selection/
  9. FQL - データ操作のための豊富な関数 文字列関連 文字列の長さを取得 文字列の一部を返す 文字列を数値に変換する パターンが最初に出現する前の文字列を取得 パターンが最初に出現した後の文字列を取得 文字列をすべて大文字に変換します

    文字列をすべて小文字に変換します 文字列をトリムする 文字列をパディングする 文字列をコンポーネントの配列に分割する 文字列の配列を単一の文字列に結合します ある文字列を別の文字列に置き換えます Base64で文字列をエンコードする Base64で文字列をデコードする 文字列をJSONに変換する 数値関連 数値を合計する 2 つの数値の差の絶対値を取得します 数値を切り上げます 数値を切り捨てる 数値の累乗 数値の平方根を取得します 数値を 16 進数または 2 進数に変換する 新しいランダムな請求書番号を生成します 数値を文字列に変換 URL関連 URLコンポーネントをエンコードする URLコンポーネントをデコードする URL全体をエンコードする URL全体をデコードする 日付・時間関連 現在時刻を ISO 8601 形式で取得します エポックからの現在時刻を Unix ミリ秒単位で取得 特定の日付形式から Unix エポック時間に変換 Unix エポック時刻から特定の日付形式に変換 日付から日 /月/年を取得する 日付から時間を取得する 日付から曜日を取得する 2 つの日付を比較する 日付を 1 日増やす 2 つの日付の差を取得する 時刻と日付の形式 ロジック・配列操作関連 配列に追加する If-then-else 配列を分割する 配列内の各値に対してアクションを実行 値のフィルター 配列を単一の値に折りたたむ 配列をソートする オブジェクト操作 オブジェクト内の各値に対してアクションを実行 Manipulate data in FQL https://learning.postman.com/docs/postman-flo ws/flows-query-language/data-manipulation/ FQL function reference https://learning.postman.com/docs/postman-flo ws/flows-query-language/function-reference/
  10. TypeScriptの活用 意思決定の役割を担う EvaluationとIfの2つのブロックにおけるロジック記述言語として TypeScriptも活用 できます。FQLで実現できないロジック(例 : 暗号化)を必要とする関数を直接実装できます https://learning.postman.com/docs/postman-flows/concepts/flows-typescript-support/ @postman_japan TypeScript記述における制約

    • ライブラリのimport/requireができない • ファイルシステムアクセスができない • スクリプトからAPI呼び出しができない その他ポイント • Web Crypto API、SHA256ハッシュ、AES暗号化、 セキュアな乱数生成など、様々な暗号化機能が用意さ れている • 次の関数でコンソールへのログ出力が可能 : console.log, console.error, console.warn, console.info
  11. 変数の初期値・現在値の保存先 Postmanクラウド ブラウザアプリ デスクトップアプリ 同期 同 期 初期値 現在値 現在値

    初期値 初期値 変数 変数 ローカル ローカル 変数 現在値 コピー(*) (*) - 初期値更新時に同じ値を現在値にコピー
  12. フローの実行場所・実行バージョンと保存先 未公開 フロー 未公開 フロー 未公開 フロー 公開済 フロー ブラウザアプリ

    デスクトップアプリ Webhook 公 開 (*) ローカル ローカル Postmanクラウド 同期 同 期 フロー コレクション 環境・コレクション変数 (*) - その時点のフローと関連コレクション、変数 (環境 / コレクション変数)がセットで保存される
  13. Postman Flowsでの変数活用の注意点 公開済フローの実行時 Postmanクラウドで実行) • 環境変数・コレクション変数は定数 Read-only)としてのみ活用可能であり、フロー実行時に変更できない ◦ フロー実行時にAPIリクエストのスクリプト (pre-request|post-response)で変更できない

    • フロー実行時にグローバル変数を活用できない(公開済みフローの一部として保持されない) 未公開フローの実行時 (ローカルクライアント側で実行) • 環境変数・コレクション変数・グローバル変数、いづれもフロー実行時に変更可能な変数として活用できる
  14. Postman Flowsにおける秘匿情報の扱い方 秘匿情報を活用するフローを公開して実行(クラウドで実行)する場合は、秘匿情報を次のように格納す ることを推奨する • 秘匿情報は環境変数として格納し、変数タイプはシークレットで、初期値にも現在値と同じ値を設定する ◦ 公開済みフローをクラウドで実行するときは、変数の初期値に設定した値が活用される。一方、ローカル実行時には現在値 が活用される ◦

    公開済みフロー実行時にはグローバル変数を活用できない(公開済フローの一部として保持されないため) ◦ なお、フローを公開して実行しない(ローカルのみで実行する)場合は、初期値に秘匿情報を設定する必要はなく、また環境 変数以外にもグローバル変数や Postman Vaultの活用が可能 • パーソナルワークスペース、or 最低限のアクセス共有レベルのワークスペースを活用する ◦ 上述の通り、秘匿情報を環境変数の初期値にも設定する必要がある。初期値はクラウド同期され、従ってそのワークスペー スにアクセス可能なメンバーにも共有されることになる。 ◦ もしパーソナルワークスペース以外を活用する場合は、初期値がクラウド同期されることを意識し、プライベートやチームワー クスペースなど最低限のアクセス共有レベルを持つワークスペースを選択ください
  15. Postman Flows 参考情報 • Postman Flows ラーニングセンター https://learning.postman.com/docs/postman-flows/gs/flows-overview/ • Postman

    Flowsブロック https://qiita.com/nagix/items/2ebedd0273e7eb13c2cf • Postman Flows FQLサンプル https://qiita.com/nagix/items/adb1b7f484fc8167c046 • Postman Flows FQL関数 https://qiita.com/nagix/items/2a79a0899c4765f0af97 • Postman Flows スニペット https://www.postman.com/postman/postman-flows/flow/663b2f59c5d21c003d361465
  16. Postman Flows • Postman Flowsオンラインワークショップ資料 2024年9月実施) ◦ Postman Flows オンラインワークショップ

    (スライド) • Postman Flows ハッカソン資料 2024年5月実施) ◦ Postman Flows オンラインハッカソンセミナー (スライド) ◦ Postman Flows オンラインハッカソンセミナー YouTube) • Postman Flowsブロック https://qiita.com/nagix/items/2ebedd0273e7eb13c2cf • Postman Flows FQLサンプル https://qiita.com/nagix/items/adb1b7f484fc8167c046 • Postman Flows FQL関数 https://qiita.com/nagix/items/2a79a0899c4765f0af97
  17. ワークスペースとは? 5 種類のワークスペースがあり、それぞれ異なる共有アクセスレベルを提供します パーソナル 自分だけがアクセス可能 プライベート ワークスペース作成ユーザーとそのワークスペースに招待されたチー ムメンバーのみアクセス可能。要 Professional プラン

    チーム 全てのチームメンバーだけがアクセス可能。設定可能なチームメン バー数はプランによって変わる(無料は 3 名まで) パートナー ワークスペース作成ユーザーとそのワークスペースに招待されたチー ムメンバー、およびパートナーとして招待した外部ユーザーのみアクセ ス可能。要 Professionalプラン パブリック 世界中の誰もがアクセス可能。パブリック API ネットワークに API を公 開するにはワークスペースをパブリックする必要がある ワークスペースの種類 @postman_japan
  18. コレクションとは? コレクションは、実行可能な関連APIリクエスト(群)の集合です。コレクション単位で(もしくはコレクションに 関連付けて)モックサーバー、モニター、テストスイートなど主要なPostman機能が利用できます コレクション APIリクエスト テスト サンプル APIリクエスト テスト サンプル

    APIリクエスト テスト サンプル コレクションでできる主なこと • 複数APIリクエスト、関連レスポンス、テストの定義 • ワークフロー定義(リクエスト呼び出しのシーケンス) • リクエスト・テスト実行の自動化(コレクションランナー活用) • コレクション単位の文書化 • モックサーバー利用(コレクション単位) • モニター利用(コレクション単位) • チームメイトや利用者とのコラボレーション ◦ フォーク(Fork) ◦ プルリクエスト ◦ コメント 他にもいろんなことができます
  19. 変数 変数として保存された値はPostman内で {{変数名}}表記で再利用できます • 変数の種類 ◦ グローバル変数 ◦ コレクション変数 ◦

    環境変数(Environment) • 変数スコープ ◦ 変数の種類ごとに異なる • 変数タイプ ◦ default ◦ secret (グローバルと環境変数のみ) • 動的変数 ◦ {{$guid}}, {{$timestamp}}, {{$randomInt}}, etc. 変数スコープ 変数関連参考資料 - Store and reuse values using variables - Group sets of variables in Postman using environments - 徹底解説 - Postman 変数 Variables) 同じ名前の変数が2つの異なるスコープで宣言されている場合、狭 い方のスコープの変数に格納されている値が使用される 変数 @postman_japan
  20. 秘匿情報の扱い方 - Postman Vaultの活用 Postman Vaultを活用した秘匿情報に扱いについてのポイント • Postman Vaultと呼ばれるPostmanローカルインスタンスに格納する ◦

    機密データをPostmanのローカルインスタンスにのみ保存して再利用できる仕組み。データは Postman Vault 内で暗号化され保存される ◦ Postmanクラウドには同期されない(共同作業者が Vaultにシークレットの使用を防ぐ) ◦ デフォルトでVault シークレットはマスクされている ◦ [注意] スクリプトからVaultシークレットを設定したりアクセスはできない @postman_japan [補足] Enterpriseプランかつ Advanced Security Administration アドオンを購入することで外部Vaultインテ グレーションの活用も可能。外部 Vaultインテグレーションにより外部キー管理サービスに格納されたシークレット 情報を Postman 変数として利用可能。サポートされている外部キー管理サービスに、 1Password、AWS Secrets Manager、Azure Key Vault、HashiCorp Vaultなどがある。 参考情報