Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

コマンドライン? @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

Slide 5

Slide 5 text

お手製のスクリプト? @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

Slide 6

Slide 6 text

私の周りでは 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 は、プリミティブな手段として、コピペ実行用に便利で あり、記事などでのリクエスト内容の説明用としてもわかり 易さはある

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

アプリだけじゃない 豊富な 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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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 補足

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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サーバに自動的に保存され後で閲覧が可能 補足

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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