$30 off During Our Annual Pro Sale. View Details »

アナタの知らない Postmanエクスペリエンス / An unknown Postman experience for you

アナタの知らない Postmanエクスペリエンス / An unknown Postman experience for you

Presentation Slides for Postman Tokyo Meetup 2023.7
Session title: アナタの知らない Postmanエクスペリエンス / An unknown Postman experience for you

Yoichi Kawasaki

July 05, 2023
Tweet

More Decks by Yoichi Kawasaki

Other Decks in Technology

Transcript

  1. All rights reserved by Postman Inc
    アナタの知らない
    Postman エクスペリエンス
    川崎 庸市
    Technology Evangelist

    View Slide

  2. テクノロジーエバンジェリスト
    Postman 株式会社
    川崎 庸市
    @postman_japan
    @yokawasa

    View Slide

  3. API の開発・テストでどんな
    ツール使ってますか?
    @postman_japan

    View Slide

  4. コマンドライン?
    @postman_japan
    $ curl --header "Content-Type: application/json" \
    --request POST \
    --data '{ \
    "Item": "チョコレート", \
    "Count": 3, \
    "API-Key": "880457872340965884" \
    }' \
    https://api.example.com/api/order
    cURL Sample

    View Slide

  5. お手製のスクリプト?
    @postman_japan
    import requests
    import json
    url = 'https://api.example.com/api/order'
    payload = json.dumps({
    'Item': 'チョコレート',
    'Count': 3,
    'API-Key': '880457872340965884'
    })
    headers = {'Content-Type': 'application/json'}
    response = requests.request('POST', url, headers=headers,
    data=payload)
    print(response.text)
    Python Sample

    View Slide

  6. 私の周りでは
    Elastic Cloud on Kubernetes (ECK)の仕組みと各構成変更における挙動について 
    https://qiita.com/yokawasa/items/31742bb9b6a1898fb450
    curl -u "elastic:$PASSWORD" \
    -k -XPUT \
    "https://localhost:9200/${INDEX_NAME}/_settings" \
    -H 'Content-Type: application/json' \
    -d'
    {
    "index" : {
    "auto_expand_replicas": "0-all"
    }
    }'
    Curl は、プリミティブな手段として、コピペ実行用に便利で
    あり、記事などでのリクエスト内容の説明用としてもわかり
    易さはある

    View Slide

  7. でも、このようなとき
    ツラくなりませんか?
    @postman_japan
    ● リクエストパラメータが複数あって値を柔軟に
    変更したい
    ● 複数のAPI環境がある
    ● 認証を要する(特に有効期限があるもの)
    ● リクエストにシークレット情報を含めたい
    ● 複数APIを連携させたテストをしたい
    ● リクエスト毎にレスポンス内容をチェックしたい

    View Slide

  8. All rights reserved by Postman Inc
    Postman とは?
    全世界2,500 万人以上のユーザーに使われている APIを構
    築して利用するための API プラットフォームです。
    API ライフサイクルの各ステップを簡単に行えるようになり、
    API の共有と開発コラボレーションを効率化できます。

    View Slide

  9. Postman アプリ
    @postman_japan
    ドキュメントを見ながら
    作業できる🚀
    整形されたレスポンスが見られる🚀
    パラメータを変えてすぐ試せる🚀
    エンドポイントを打ち込
    む必要がない🚀
    API のセットを整理し
    ておける🚀

    View Slide

  10. アプリだけじゃない
    豊富な Postman 利用オプション
    ● Postman アプリ
    ○ Windows、macOS、Linux 上のデスクトップアプリ
    ● Postman ウェブ
    ○ ウェブブラウザから利用できる
    ● Postman CLI
    ○ コマンドライン。自動化、CI/CD などで利用可能
    ● Postman VS Code拡張機能
    ○ VS Code 拡張として Postman の機能が利用可能
    ● Postman API
    ○ Postman 自身の API を活用して他システムとの連携可能
    ● Postman Collection SDK
    ○ Node.js モジュール。コレクション管理が可能
    ● インテーグレーション機能
    ○ さまざまなプラットフォームとの統合サポート
    Postman CLI 例
    Postman VS Code 拡張機能例
    @postman_japan

    View Slide

  11. HTTP だけじゃない
    利用可能なリクエスト
    @postman_japan

    View Slide

  12. Postman は APIプラットフォーム
    API プラットフォームとは、チームが API を効果的に構築、
    管理、公開、利用できるようにする統合ツールとプロセスを
    備えたソフトウェアシステムです。
    Postman は、API 提供者が、API 利用者と直接関わりなが
    ら、設計〜製造までのAPI ライフサイクル全体の管理を支援
    します。コード管理ツール、CI/CD、クラウドインフラ、APM・
    監視ソリューションとの統合を通じて既存のワークフローを補
    完・強化します。
    また、コラボレーションを促進し、一貫性を促進し、リスク軽
    減のためのAPI ガバナンスとセキュリティ戦略を策定し、実
    施できるようになります。
    What is an API platform? https://www.postman.com/api-platform/
    @postman_japan

    View Slide

  13. API 提供側
    ライフサイクル
    API 利用側
    ライフサイクル
    単一プラットフォームで 提供者と利用者両方の
    API ライフサイクルをサポート
    テスト
    開発
    設計
    定義
    デプロイ
    デプロイ
    配布
    監視
    監視
    テスト
    評価
    統合
    発見
    セキュリ
    ティ
    @postman_japan

    View Slide

  14. Postman デモ
    API ライフサイクル主要機能編

    View Slide

  15. デモ・アジェンダ
    ● コレクション、リクエスト
    ● 変数
    ● スクリプト(Pre-request、Tests)
    ● コレクションランナー(手動・スケジュール実行)
    ● パフォーマンステスト
    ● モニター
    ● 認証
    ● Postbot
    ● コマンドライン(CLI)
    @postman_japan

    View Slide

  16. 変数
    変数として保存された値はPostman内で
    {{変数名}}表記で再利用できます
    ● 変数の種類
    ○ グローバル変数
    ○ コレクション変数
    ○ 環境変数(Environment)
    ● 変数スコープ
    ○ 変数の種類ごとに異なる
    ● 変数タイプ
    ○ default
    ○ secret (グローバルと環境変数のみ)
    ● 動的変数
    ○ {{$guid}}, {{$timestamp}},
    {{$randomInt}}, etc.
    変数スコープ
    https://learning.postman.com/docs/sending-requests/variables/
    同じ名前の変数が2つの異なるスコープで宣言されている場合、狭
    い方のスコープの変数に格納されている値が使用される
    補足

    View Slide

  17. 変数 使用例
    (1)リクエストURLの一部に対しての変数使用例 (3)クエリーパラメータの変数使用例
    (2)ヘッダーでの変数使用例
    (4)リクエストボディでの変数使用例
    補足

    View Slide

  18. Postmanスクリプトとは?
    ● Postman サンドボックスで実行
    ● Built-inのJavaScript APIをpm、postmanオブジェクトを通じて利用可能
    ● Mochaベースのテストフレームワークを利用、AssertionライブラリとしてChaiが利用可能
    ● 豊富なスニペットとサンプルスクリプト集が用意されている
    ● 新機能: Postbot(AIを活用したスクリプト生成アシスタント)
    スクリプト
    Postbot
    スニペット
    ローコード
    支援機能
    補足

    View Slide

  19. 2種類のスクリプト実行ステージ
    PostmanではPre-requestとTestの2種類のステージでスクリプトの実行が可能
    Pre-request
    リクエスト実行前に実行
    Test
    レスポンス取得後に実行
    リクエスト
    送信
    レスポンス
    取得
    補足

    View Slide

  20. APIパフォーマンステスト
    コレクションのAPI群に対して、手軽にクライアントから負荷をかけ、APIのパフォーマンスや性能フィード
    バックが得られる。大規模ピークシナリオ・テスト向けではない
    仮想ユーザー数
    テスト時間
    負荷のかけ方
    固定 / ランプアップ
    実行
    コレクションランナー実行方法設定
    補足

    View Slide

  21. モニターで複数エリアから定期的にAPIテスト実行
    ● コレクションごとにモニターを設定
    ● テスト実行頻度
    ○ 5分毎〜設定可能。ただし無料プランは一時間毎〜
    ● テスト実行リージョン選択
    ○ 複数リージョンからのAPIテスト実行が可能
    ● スタティックIP設定
    ○ 要Professional / Enterpriseプラン
    ● アラート通知設定
    ○ メール通知、or インテグレーション設定でslack、PagerDuty
    など他チャンネルへの通知も可能
    ● リトライ、タイムアウトなど設定可能
    テスト実行リージョンの選択
    補足

    View Slide

  22. 認証
    Postman でサポートされている認証方式
    @postman_japan
    補足

    View Slide

  23. デモの認証プロセス
    デモでは Spotify API 利用のために OAuth2.0 Authorization Code (with PKCE) フローでアクセストー
    クンを発行・再発行する
    PostmanのoAuth2.0認証設定ページ
    https://blog.postman.com/pkce-oauth-how-to/
    @postman_japan
    補足

    View Slide

  24. 2つのCLI - Postman CLIとNewman
    Postmanで利用可能な2種類のコマンドラインインターフェースとその違いについて。スタンドアローン実
    行要件など特別な理由がない限りPostman CLIの利用を推奨
    Postman CLI
    (Postmanサポート)
    Newman
    (OSS/コミュニティサポート)
    - Postmanによりサポート
    - ダウンロード可能パッケージとして配布
    - コレクション実行結果をデフォルトでPostman
    に送信
    - ライブラリとしては利用できない
    - Postmanにサインイン可能で、アカウントに紐
    づいたPostman管理アセット情報を事前エク
    スポートすることなく利用可能(ただし、
    Postmanサーバにアクセスが必要)
    - API Linting(optional)が実行できる
    - OSSとしてコミュニティサポート
    - npmパッケージとして配布
    - ライブラリとして利用可能
    - Postmanにサインインできない。よって、CLI
    から利用するコレクション情報は事前にエクス
    ポートしておく必要がある
    - スタンドアローン実行が可能(Postmanサーバ
    へのアクセスが不要なので)
    https://learning.postman.com/docs/postman-cli/postman-cli-overview/#comparing-the-postman-cli-and-newman
    補足

    View Slide

  25. Postman CLIからのコレクションテスト実行
    CI/CD - GitHub Actionsサンプル設定例
    Postman CLIからの
    コレクションテスト実行
    例が表示
    CI/CDパイプラインか
    らの実行例
    コレクションランナー実行方法設定
    CLIから実行を選択
    補足

    View Slide

  26. Postman CLIからのコレクションテスト実行例
    # Postmanにログイン
    postman login --with-api-key {{postman-api-key}}
    # コレクションテスト実行
    # -e で環境 (Environment) の指定が可能
    postman collection run {{collection-ID}} \
    -e {{environment-ID}}
    コレクションテスト実行コマンド例
    Postman CLIでのcollection run実行イメージ
    実行結果の詳細はPostmanサーバに自動的に保存され後で閲覧が可能
    補足

    View Slide

  27. まだまだあります
    ● モックサーバー
    ● Postman Flows
    ● API ネットワーク
    ● API ビルダー
    ● API セキュリティ
    ● API ガバナンス
    ● ・・・
    また別の機会にご紹介いたします
    @postman_japan

    View Slide

  28. ありがとうございました
    @postman_japan

    View Slide