Slide 1

Slide 1 text

All rights reserved by Postman Inc API デバッグとリバースエ ンジニアリング 草薙 昭彦 テクノロジーエバンジェリスト

Slide 2

Slide 2 text

テクノロジーエバンジェリスト Postman 株式会社 草薙 昭彦 @postman_japan @nagix

Slide 3

Slide 3 text

アジェンダ ● Postman を使った API リクエストのデバッグ ● Postman プロキシとインターセプター を使ったリバースエンジニアリング @postman_japan

Slide 4

Slide 4 text

Postman を使った API リクエストのデバッグ @postman_japan

Slide 5

Slide 5 text

Postman を使った API リクエストのデバッグ概要 ● API リクエストが期待通りに動作しない場合、様々な原因が考えられる ● Postman で利用できる主な機能 ○ Postman ワークベンチ画面でリクエストを精査 ○ Postman コンソールの利用 ○ HTTP バージョンの指定 ○ AI アシスタント Postbot による支援 ● よくある問題とその原因 @postman_japan

Slide 6

Slide 6 text

Postman アプリ画面 @postman_japan ヘッダー サイドバー 右サイドバー フッター ワークベンチ ナビゲーション メニュー

Slide 7

Slide 7 text

Postman ワークベンチでチェックすべき情報 ● リクエストヘッダー ○ ヘッダーに過不足がないか ○ 必要な認可情報が指定されているか ● リクエストボディ ○ Content-Type が正しく設定されてい るか ● Cookie ○ 必要な情報が入っているか @postman_japan ● レスポンスメタデータ ○ ステータスコード、ネットワーク設定、 証明書設定を確認 ○ レスポンス時間の内訳やデータサイ ズを確認 ● レスポンスヘッダー ○ 問題に関する情報が添えられていな いか ○ サーバーから送られる Cookie 情報

Slide 8

Slide 8 text

API リクエストの作成 - ヘッダーのカスタマイズ @postman_japan ヘッダータブを選択 キーと値のペアを入力 自動で追加されるヘッダーはデフォルトで非表示になっている

Slide 9

Slide 9 text

レスポンスの確認 @postman_japan レスポンスの詳細情報を見る ネットワーク情報 ステータスコード レスポンス時間 レスポンスサイズ

Slide 10

Slide 10 text

レスポンスの確認 @postman_japan ヘッダーを選択 レスポンスヘッダーを見る キーと値を見る iにマウスを合わせると説明が見られる

Slide 11

Slide 11 text

Postman コンソール ● Postman で送信したリクエストの詳細をすべて記録 ● API が期待通りに動作しない時、コンソールを使って リクエストのデバッグができる ● フッターの「コンソール」を押すと画面下部に開く @postman_japan

Slide 12

Slide 12 text

Postman コンソールで見られる情報 ● リクエストヘッダー、変数値、リダイレクトを含む、送信されたリクエスト ● リクエストに使われた、プロキシ設定や証明書 ● IP アドレス、暗号スイート、プロトコルなどのネットワーク情報 ● Pre-request スクリプトや Post-response スクリプトのログや、非同期リクエスト ● Postman で処理される前にサーバーから送られた未加工の応答 @postman_japan

Slide 13

Slide 13 text

Postman コンソールにログを出力 ● Pre-request スクリプトや Post-response スクリプトに次の記述をして、コンソールにログを 出力 ○ console.log() ○ console.info() ○ console.warn() ○ console.error() ○ console.clear() @postman_japan

Slide 14

Slide 14 text

よくある問題 : 接続 ● ネットワーク接続が正常ではない ● Web ブラウザなどでネットワーク接続を確認 @postman_japan

Slide 15

Slide 15 text

よくある問題 : ファイアウォール ● ファイアウォールによっては、ブラウザ以外からの接続をブロックするように設定されている場 合がある ● Postmanが動作するようにネットワーク管理者に連絡 @postman_japan

Slide 16

Slide 16 text

よくある問題 : プロキシ設定 ● リクエストにプロキシサーバーを使用している場合は、設定を確認 ● デフォルトでは、Postman は OS のネットワーク設定のプロキシ設定を使用 ● コンソールでプロキシサーバに関するデバッグ情報を確認 @postman_japan

Slide 17

Slide 17 text

よくある問題 : SSL 証明書 ● HTTPS 接続を使用すると問題が発生する場合 ● 設定の「SSL証明書の検証」をオフにすることができる ● サーバーがクライアント側 SSL 接続(クライアント認証)を行っている可能性もある。コン ソールを使用して、正しい SSL 証明書がサーバーに送信されているか確認 @postman_japan

Slide 18

Slide 18 text

よくある問題 : クライアント証明書 ● APIサーバーにはクライアント証明書が必要な場合がある ● 設定の「証明書」でクライアント証明書を追加 @postman_japan

Slide 19

Slide 19 text

よくある問題 : Laravel 例外発生時に HTML が返る ● Accept リクエストヘッダーが指定されてない、もしくは Accept: */* の場合、ステータ スコード 200 で HTML コンテンツが返る仕様 ○ Laravel ドキュメント Writing The Validation Logic ● リクエストヘッダーに Accept: application/json を指定 @postman_japan

Slide 20

Slide 20 text

Postman プロキシと インターセプターを使った リバースエンジニアリング @postman_japan

Slide 21

Slide 21 text

HTTP トラフィックのキャプチャ ● HTTP トラフィックのキャプチャは、API の開発とテストにとって重要 ○ 実際に通信で流れるデータを確認して、動作を解析したい ○ クライアントやサーバーの実装が不明で、通信から API 仕様を推測したい ● Postman を使うと、クライアントアプリと API 間でやり取りされるリクエストを検査し、 コレク ションに保存できる ○ 保存されたリクエストを使用して、 API の動作を理解したり、デバッグを支援したりするこ とができる ● Postman で HTTP/HTTPS のトラフィックをキャプチャする 2 つの方法 ○ Postman プロキシ ○ Postman インターセプター @postman_japan

Slide 22

Slide 22 text

Postman プロキシとインターセプター @postman_japan Web API ブラウザー Postman デスクトップアプリ Postman インターセプター ブラウザー拡張機能 Web アプリ ネイティブアプリ モバイルアプリ 組み込みデバイス Postman プロキシ ポート 5559(デフォルト)

Slide 23

Slide 23 text

Postman プロキシ ● プロキシ: クライアントアプリとサーバー(API など)の間に位置する仲介サーバー ● Postman プロキシを有効にして、かつクライアントでプロキシを使うように設定すると、プロキシ を通過する HTTP や HTTPS のトラフィックをキャプチャできる @postman_japan

Slide 24

Slide 24 text

キャプチャしたリクエストをコレクションに保存 ● キャプチャしたプロキシセッション「履歴」メニューから呼び出せる ● リクエストを選択して保存先のコレクションを指定すると、キャプチャしたリクエストをコレクション に保存できる @postman_japan

Slide 25

Slide 25 text

Cookie のキャプチャ ● セッション中に Cookie のキャプチャをすることも可能 ● Cookie を選択して、キャプチャした Cookie を Cookie ジャーに保存できる @postman_japan

Slide 26

Slide 26 text

Postman プロキシとインターセプター @postman_japan Web API ブラウザー Postman デスクトップアプリ Postman インターセプター ブラウザー拡張機能 Web アプリ ネイティブアプリ モバイルアプリ 組み込みデバイス Postman プロキシ ポート 5559(デフォルト)

Slide 27

Slide 27 text

Postman インターセプター ● ブラウザ拡張機能を活用してクライアントと API 間のトラフィック(Cookie を含む)をキャプチャして 送信されたリクエスト内容の精査・デバッグができる ● キャプチャしたリクエストを Postman コレクションとして保存ができる インターセプター対応ブラウザ ● Chrome ● Safari ● Edge ● Firefox @postman_japan キャプチャ対象ドメイン指定 キャプチャしたリクエスト情報を元にデバッグ

Slide 28

Slide 28 text

Cookie を同期 ● プロキシセッションやインターセプターセッションを開始することなく、 Cookie を常に最新の値に 同期するための機能 ● プロキシやインターセプターのインストールや設定をしておく必要はある @postman_japan

Slide 29

Slide 29 text

Postman プロキシの設定方法 @postman_japan https://qiita.com/nagix/items/5fc9f35c62b7398c3d58/

Slide 30

Slide 30 text

Postman インターセプターの設定方法 @postman_japan https://qiita.com/nagix/items/84aac2eaff523d9a2485/

Slide 31

Slide 31 text

Postman API Night Tokyo https://postman.connpass.com/event/338064/ 2025/2/3(月) @postman_japan まもなく公開

Slide 32

Slide 32 text

Postman オンラインワークショップ https://postman.connpass.com/event/ @postman_japan

Slide 33

Slide 33 text

Postman Japan コミュニティ Discord Discord サーバーを開設しました! 今後 Postman のプロダクトアップデートやイベン ト情報の配信や、みなさんとの交流の場として活 用していきたいと思います。 https://discord.gg/G4SQWDDqVa @postman_japan

Slide 34

Slide 34 text

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