Postman の使い方: 便利だと思った機能をご紹介
はじめに
本記事は Postman のアドベントカレンダーの9日目です。Postman を使った時に便利だと思った機能を備忘録として残しておきたいと思いアドベントカレンダーに参加しました。近年、API開発の重要性は増す一方で、効率的なツールの選択がプロジェクトの成功に大きく影響します。この記事ではPostmanの主要な機能から隠れた便利機能まで、実務で役立つ情報をお届けします。
Apidog(ベストなPostmanの代替品)に乗り換えることをお勧めします。
Postmanは多機能で使いやすいツールですが、無料プランには一定の制限があります。例えば、チームコラボレーション機能や高度なモニタリング機能は有料プランでのみ利用可能です。また、大規模なチーム開発では、同時編集やバージョン管理に制限を感じることもあります。
そのような場合、Apidogなどの代替ツールを検討するとよいでしょう。Apidogは近年人気を集めているAPIプラットフォームで、Postmanの主要機能に加えて、よりモダンなインターフェースや、一部の機能では優れたユーザー体験を提供しています。特にAPI文書化機能や、チームコラボレーション機能では、Postmanと比較して使いやすいと評価する開発者も多くいます。
Postman とは
Postman は API を構築・利用するための総合的な API プラットフォームです。2012年に単純なChrome拡張機能として始まり、今や世界中で2,800万人以上の開発者に利用されています。cURL よりも遥かに簡単に API にリクエストを送信し、レスポンスを受けることが出来ます。
Postmanの基本的な使い方は非常にシンプルです。以下のように API エンドポイントを「postman-echo.com/get」に指定して、GET メソッドで送信するだけで API のレスポンスを得ることができます。この直感的なインターフェースにより、APIテストの敷居を大幅に下げることに成功しています。
しかし、Postmanの真の価値はただのAPI呼び出しツールではなく、API開発のライフサイクル全体をサポートする包括的なプラットフォームとしての機能にあります。設計、テスト、文書化、モニタリング、そして共有まで、APIに関連するあらゆる作業をPostman一つで完結できる点が多くの開発者から支持を得ている理由です。
Postmanの基本機能
APIリクエストを始める前に、Postmanの基本機能について理解しておくことが重要です。
ワークスペースの活用
Postmanでは個人用とチーム用のワークスペースを作成できます。ワークスペースはAPIプロジェクトを整理するための基本単位となります。個人での利用であっても、プロジェクトごとにワークスペースを分けることで、作業効率が向上します。
コレクションとフォルダ
関連するAPIリクエストはコレクションとしてグループ化できます。例えば、ユーザー管理APIなら、「ユーザー取得」「ユーザー作成」「ユーザー更新」「ユーザー削除」などのリクエストを一つのコレクションにまとめることが可能です。さらに、コレクション内でフォルダを作成することで、より細かく整理できます。
環境変数の設定
開発環境、テスト環境、本番環境など、異なる環境でAPIをテストする場合、環境変数を利用すると便利です。例えば、ベースURLを環境変数として定義しておけば、環境を切り替えるだけで、すべてのリクエストが適切なサーバーに向けられます。
// 開発環境
{
"base_url": "<https://dev-api.example.com>",
"api_key": "dev_key_123456"
}
// 本番環境
{
"base_url": "<https://api.example.com>",
"api_key": "prod_key_789012"
}
環境変数は{{変数名}}
の形式でリクエストのどこにでも使用できます。
Tips
ここからはPostmanを使っていく中で特に便利だと感じた機能を詳しくご紹介します。これらの機能を活用することで、API開発やテストの効率が格段に向上するでしょう。
日本語にできる
Postmanは多言語対応しており、日本語インターフェースも利用可能です。設定 > 一般 > アプリケーション > 言語(ベータ)から日本語に変更できます。英語での専門用語に慣れていない方や、チーム全体で統一した言語環境を使いたい場合に便利です。
日本語化することで、メニュー項目やボタンの意味がわかりやすくなり、Postmanを始めたばかりの方でも直感的に操作できるようになります。ただし、一部の専門的な用語や新機能については、翻訳が追いついていない場合もありますので、その点はご了承ください。
cURL を生成してくれる
APIの動作確認後、それをコードに組み込む際に便利なのが、cURLコマンドの自動生成機能です。Postman を使って API を呼び出すだけではなく、右タブにある「コード」を開くと cURL コマンドを生成してくれます。
curl --location 'postman-echo.com/get' \\
--header 'Cookie: sails.sid=s%3AtfWu_84xZ7wLoWPfk3U2zo8oKDU9Zfx1.RmNlxpIkrIJFlo8ppIJrfadVD2p0KNpAsYX2QNFCvVk'
このcURLコマンドは、ターミナルやシェルスクリプトでそのまま実行できます。複雑なヘッダーやパラメータを持つAPIリクエストでも、手動でcURLコマンドを書く手間が省けるため、開発時間の短縮につながります。
さらに、このcURLコマンドをベースにして、サーバーサイドのプログラムやCI/CDパイプライン、自動テストなどに組み込むことも容易になります。
様々な言語で API 呼び出しサンプルを生成してくれる
cURLコマンドだけでなく、多様なプログラミング言語でのAPIリクエストコードも自動生成できます。対応言語はJavaScript, Python, PHP, Ruby, Java, C#, Go, Swift など20以上にのぼり、ほとんどの主要言語をカバーしています。
例えば、JavaScriptのコードは以下のように生成されます:
var myHeaders = new Headers();
myHeaders.append("Cookie", "sails.sid=s%3AtfWu_84xZ7wLoWPfk3U2zo8oKDU9Zfx1.RmNlxpIkrIJFlo8ppIJrfadVD2p0KNpAsYX2QNFCvVk");
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("postman-echo.com/get", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
Pythonでは以下のようになります:
import requests
url = "postman-echo.com/get"
headers = {
'Cookie': 'sails.sid=s%3AtfWu_84xZ7wLoWPfk3U2zo8oKDU9Zfx1.RmNlxpIkrIJFlo8ppIJrfadVD2p0KNpAsYX2QNFCvVk'
}
response = requests.request("GET", url, headers=headers)
print(response.text)
この機能は、フロントエンド開発者とバックエンド開発者の連携を円滑にします。API仕様が決まった段階で、実際の呼び出しコードをPostmanから生成し、それぞれの開発環境にすぐに組み込めるからです。また、異なる言語間でのAPIの一貫した使用方法を確保するのにも役立ちます。
認証がある API にもリクエストができる
実際のAPI開発では、ほとんどのAPIに何らかの認証メカニズムが実装されています。Postmanは様々な認証方式に対応しており、複雑な認証処理も簡単に行えます。
Basic認証
最もシンプルなBasic認証では、ユーザー名とパスワードを入力するだけで、自動的にBase64エンコードされてAuthorizationヘッダーに追加されます。
curl --location 'postman-echo.com/get' \\
--header 'Authorization: Basic c2FtcGxlX3VzZXI6c2FtcGxlX3Bhc3N3b3Jk' \\
--header 'Cookie: sails.sid=s%3AjkKLpouT5abVpjIH6m0sbtp1y2Q2ujAj.GYmV94gwt3MjI%2FSV4G0smQmtGx7fEouO1X2mwQez8Ag'
ここでc2FtcGxlX3VzZXI6c2FtcGxlX3Bhc3N3b3Jk
は「sample_user:sample_password」をBase64エンコードした文字列です。このエンコード処理を手動で行う必要がなく、Postmanが自動的に処理してくれるため、開発効率が格段に向上します。
OAuth 2.0認証
より複雑なOAuth 2.0認証もPostmanでサポートされています。OAuth 2.0の認証フロー(認可コードフロー、クライアントクレデンシャルフロー、パスワードフロー、インプリシットフローなど)をPostman上で完結できます。
OAuth 2.0の設定では、以下の項目を設定するだけです:
- アクセストークンURL
- 認可URL
- クライアントID
- クライアントシークレット
- スコープ
- リダイレクトURI
設定後、「トークンを取得」ボタンをクリックするだけで、認証フローが開始され、取得したトークンが自動的にリクエストに組み込まれます。これにより、複雑なOAuthフローをPostman上で視覚的に管理でき、開発者の負担を大幅に軽減できます。
API Key認証
多くのWebサービスで使われているAPI Key認証も簡単に設定できます。認証タイプで「API Key」を選択し、キー名と値、送信場所(ヘッダー、クエリパラメータ、クッキーなど)を指定するだけです。
テスト機能
Postmanには強力なテスト機能が組み込まれています。JavaScriptを使ってAPIレスポンスを検証し、自動テストを実行できます。
// ステータスコードが200であることを確認
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
// レスポンス時間が200ms未満であることを確認
pm.test("Response time is less than 200ms", function () {
pm.expect(pm.response.responseTime).to.be.below(200);
});
// レスポンスボディにuser_idフィールドが含まれていることを確認
pm.test("Response has user_id", function () {
var jsonData = pm.response.json();
pm.expect(jsonData).to.have.property('user_id');
});
これらのテストは個別のリクエストに追加できるだけでなく、コレクション全体に対しても実行できます。「コレクションランナー」機能を使えば、複数のAPIエンドポイントを連続して呼び出し、一連のテストを自動実行できます。
モック機能
APIが開発中でまだ利用できない場合や、特定のテストケースをシミュレートしたい場合に便利なのがモック機能です。Postmanでは、実際のAPIの動作をシミュレートするモックサーバーを簡単に作成できます。
モックサーバーを作成するには、まずレスポンスの例を定義します。例えば、ユーザー情報を取得するAPIであれば、以下のようなJSONレスポンスを定義できます:
{
"id": 123,
"name": "山田太郎",
"email": "[email protected]",
"membership": "premium",
"created_at": "2023-01-15T09:30:00Z"
}
複数の例を定義し、条件によって異なるレスポンスを返すように設定することも可能です。例えば、クエリパラメータの値によって成功レスポンスとエラーレスポンスを切り替えるといった高度な設定も可能です。
Postman の設定を共有できる
チーム開発において非常に重要なのが、APIリクエストやテスト設定の共有です。Postmanでは複数の方法で設定を共有できます:
チームワークスペース
Postmanのチームワークスペース機能を使えば、チームメンバーとコレクション、環境設定、モックサーバーなどを簡単に共有できます。変更はリアルタイムで同期され、チームメンバー全員が常に最新の状態にアクセスできます。
エクスポート・インポート
チームワークスペースを使わない場合でも、コレクションや環境設定をJSONファイルとしてエクスポートし、他のメンバーと共有できます。受け取った側は、そのJSONファイルをインポートするだけで、同じ設定を再現できます。
{
"info": {
"_postman_id": "1234abcd-5678-90ef-ab12-cd34ef567890",
"name": "ユーザーAPI",
"schema": "<https://schema.getpostman.com/json/collection/v2.1.0/collection.json>"
},
"item": [
{
"name": "ユーザー一覧取得",
"request": {
"method": "GET",
"url": {
"raw": "{{base_url}}/users",
"host": ["{{base_url}}"],
"path": ["users"]
}
}
},
// 他のAPI定義...
]
}
このエクスポート・インポート機能は、バージョン管理システム(GitなどのVCS)との統合にも役立ちます。コレクションのJSONファイルをGitリポジトリに保存すれば、APIの変更履歴を追跡でき、コードと同様にAPIの設定も管理できます。
高度な機能: スクリプティング
Postmanでは、リクエストの前後に実行されるスクリプトを記述できます。これにより、動的なリクエスト生成や複雑なテストシナリオの実装が可能になります。
プリリクエストスクリプト
リクエスト送信前に実行されるスクリプトで、動的にリクエストパラメータを生成したり、環境変数を設定したりできます。
// 現在のタイムスタンプを生成して環境変数に設定
var timestamp = new Date().getTime();
pm.environment.set("current_timestamp", timestamp);
// ランダムなユーザーIDを生成
var userId = Math.floor(Math.random() * 1000) + 1;
pm.environment.set("random_user_id", userId);
// JWT署名のためのデータ準備
var payload = {
"sub": pm.environment.get("client_id"),
"exp": Math.floor(Date.now() / 1000) + 3600,
"iat": Math.floor(Date.now() / 1000)
};
// 実際のJWT生成は別途ライブラリが必要
テストスクリプト
リクエスト送信後に実行されるスクリプトで、レスポンスの検証や後続のリクエストのための準備を行えます。
// レスポンスからトークンを抽出して環境変数に保存
var jsonData = pm.response.json();
if (jsonData.access_token) {
pm.environment.set("access_token", jsonData.access_token);
}
// レスポンスの構造が期待通りか検証
pm.test("データ構造の検証", function () {
pm.expect(jsonData).to.be.an('object');
pm.expect(jsonData.users).to.be.an('array');
pm.expect(jsonData.users[0]).to.have.all.keys('id', 'name', 'email');
});
// パフォーマンステスト
pm.test("応答時間が許容範囲内", function () {
pm.expect(pm.response.responseTime).to.be.below(300);
});
Postmanの制限と代替ツール
Postmanは多機能で使いやすいツールですが、無料プランには一定の制限があります。例えば、チームコラボレーション機能や高度なモニタリング機能は有料プランでのみ利用可能です。また、大規模なチーム開発では、同時編集やバージョン管理に制限を感じることもあります。
そのような場合、Apidogなどの代替ツールを検討するとよいでしょう。Apidogは近年人気を集めているAPIプラットフォームで、Postmanの主要機能に加えて、よりモダンなインターフェースや、一部の機能では優れたユーザー体験を提供しています。特にAPI文書化機能や、チームコラボレーション機能では、Postmanと比較して使いやすいと評価する開発者も多くいます。
おわりに
本記事では、Postmanの便利な機能を紹介しました。単なるAPIクライアントツールとしてだけでなく、API開発のライフサイクル全体をサポートする総合プラットフォームとしてPostmanを活用することで、開発効率は大幅に向上します。
基本的な機能から高度な機能まで、自分のワークフローに合わせて少しずつ取り入れていくことをお勧めします。また、チーム開発では積極的に共有機能を活用し、APIの設計や仕様についての共通理解を深めることが重要です。
これからもPostmanは進化を続け、新機能が追加されていくでしょう。定期的に公式ブログやアップデート情報をチェックして、最新の機能を取り入れていくとよいでしょう。また、使っていく中で良いと思った機能を発見したら、ぜひこの記事にもコメントで共有いただければ幸いです。
APIを中心とした開発はこれからも重要性を増していきます。効率的なツールを使いこなして、より良いソフトウェア開発を実現しましょう。