Postmanに外部ライブラリを追加することで、機能を大幅に拡張することができます。それでは、様々な利用シーンでPostmanで外部ライブラリを使うにはどうしたらいいですか?本文では、Postmanで便利に外部ライブラリ導入して、拡張機能として使う方法を皆さんに紹介します。
さらに、ローカルでJavaやPythonなど他の言語で書かれたプログラムも、pm.executeAsync()メソッドで読み込んで実行することができますので、非常に便利なAPIテストツールになります。
Postmanで外部ライブラリを利用する
PostmanがAPI開発およびテストのワークフローをより効率的にするツールになります。また、Postmanで外部ライブラリを使用することで、より多くの可能性をアンロックすることができます。例えば、日付操作のMoment.js、データ変換のLodash、または特定のニーズに合わせたカスタムライブラリなどの強力なツールをシームレスに統合できます。
上記のように、外部ライブラリを活用することで、Postmanの機能を大幅に拡張できます。テストデータの生成や応答の検証を自動化したり、複雑なテストロジックを実装したり、大量のデータを処理したり、カスタマイズされた認証方式を実装したりできます。さらに、詳細なレポートを作成したり、他のツールと統合したり、並列実行やスケーリングを実現したりすることもできます。
それでは、次は、Postmanで外部ライブラリを利用するメリットを皆さんに紹介します。
Postmanで外部ライブラリを利用するメリット
PostmanでAPIをテストしたり、デバッグしたりする際、外部ライブラリを使用することで、Postmanの機能を拡張し、より高度な操作が可能になります。主な理由は以下の通りです:
- データ生成と検証
外部ライブラリを使用することで、テストデータの生成や応答データの検証を自動化できます。例えば、ランダムな値の生成、正規表現によるデータパターンの検証、JSON Schemaによる構造の検証などが可能になります。 - テストの拡張性
Postmanの標準機能では、より複雑なテストロジックを実装するのが困難な場合があります。外部ライブラリを使用することで、テストケースをより柔軟に作成でき、テストの網羅性と信頼性が向上します。 - データハンドリング
APIテストでは、大量のデータを扱う必要がある場合があります。外部ライブラリを使用すれば、データの変換、フィルタリング、ソートなどの高度な操作が可能になります。 - 認証と承認
一部の認証方式や承認フローは、Postmanの標準機能では対応していません。外部ライブラリを使用することで、これらの機能を実装できます。 - レポート作成
外部ライブラリを使用すれば、より詳細なレポートを作成したり、カスタマイズされたレポートフォーマットに出力したりできます。 - 統合とスケーラビリティ
外部ライブラリを使用することで、Postmanをその他のツールやサービスと統合したり、並列実行やスケーラブルな実行を実現したりできます。
外部ライブラリを使用することで、Postmanの機能を拡張し、より強力で柔軟なAPIテストが可能になります。ただし、外部ライブラリの使用には学習コストがかかる点に留意が必要です。
Postmanで外部ライブラリを利用する方法
それでは、Postmanで外部ライブラリを利用するために、どうしたらいいですか?次は、主な方法を2つ紹介していこうと思います。
CDNから外部ライブラリを導入する
多くの外部ライブラリは、jsDelivrかcdnjsなどのプラットフォームでCDNバージョンでホストされています。そこで、Postmanで pm.sendRequest
関数を利用して、これらのライブラリを直接にPostmanに導入できます。
- CDNのURLを取得:利用したいライブラリのCDN URLを探します。(通常はドキュメンテーションで見つけられます)
- Pre-request Scriptの作成:Postmanを開き、Pre-request Scriptタブに切り替え、
pm.sendRequest
を利用してCDN URLから当該ライブラリのコードをフェッチします。 - 保存と検証:ここで取得したレスポンスをコレクションの変数として保存します。そして、
eval
関数を利用してライブラリのコードを実行して、それをPostmanのコレクションからアクセスさせられるようにします。

コレクションの変数からライブラリをロード
毎回もAPIリクエストを送信することを避けるため、次のステップを参照して、外部ライブラリのコードをコレクションの変数に保存することができます。
- コードのコピーとペースト:ライブラリのJavaScriptのコードを探します。(通常はGithubレポジトリで見つけられます。)
- コレクションの変数を作成:コレクションの中で、新しい変数を作成して、ライブラリのコードをそこに保存します。

- IIFE (Immediately Invoked Function Expression)の利用:PostmanのScriptでIIFEを利用して、ライブラリコードをラップすることで、そのメソッドがPostmanのサンドボックスで利用できるようにします。

この2つの方法もそれぞれのメリットがあります。CDNから直接に導入することでコレクションのコードを簡潔に保つことができますが、変数からロードすることで、大量のAPIリクエストが不要です。そこで、自分のワークフローに従って、適切な利用方法を選択しましょう。
Apidogで外部ライブラリをより便利に利用する方法
Apidogは、API ライフサイクルをストリームライン化するように設計された統合コラボレーションプラットフォームです。Postman、Swagger、Mock、JMeterなどのさまざまなツールの機能を1つのプラットフォームに統合しています。
Apidogは、Postmanのスクリプト構文と100%互換性があります。Postmanのスクリプトをシームレスに移行できます。また、ApidogにはJavaScriptベースのスクリプトエンジンが含まれているので、スクリプト(JavaScriptコードスニペット)を使用して、APIリクエストやコレクションテストにダイナミックな動作を追加できます。$$.liveRequire
関数を使ってダイナミックにインポートできます。
次は、外部のJSクラスライブラリを使用する例です。
// 単一のnpmライブラリを取得する: camelcase
$$.liveRequire("camelcase", (camelCase) => {
camelCase("foo-bar"); // => 'fooBar'
});
//複数のnpmライブラリを取得する: camelcase
$$.liveRequire(["camelcase", "md5"], (camelCase, md5) => {
camelCase("foo-bar"); // => 'fooBar'
md5("message"); // => '78e731027d8fd50ed642340b7c9a63b3'
});

Apidogは、Postmanのスクリプト構文と100%互換性があります。Postmanのスクリプトをシームレスに移行できます。

後処理スクリプトを使用して、ライブラリをインポートするためのカスタムScriptを記述します。

リクエストを送信し、コンソールタブでレスポンスを分析します

APIテストを強化する外部ライブラリ
外部ライブラリを利用して、APIテストをよりスムーズに行うために、どうしたらいいですか?次は、APIテストを強化できる人気の外部ライブラリを紹介します。これらのライブラリを上記のようにPostmanかApidogに導入すると、APIテストの効率性が大幅に上げるのでしょう。
- Lodash: この汎用ライブラリは、データ操作のためのユーティリティ関数を豊富に備えており、複雑な変換をスムーズに行えます。
- Moment.js: 日付と時間の処理が必要な場合、Moment.jsは日付のパース、フォーマット、計算を行うための直感的なAPIを提供し、日付が多数関わるAPIなら便利なライブラリです。
- Chai.js: このアサーションライブラリにより、明確かつ簡潔なアサーションを記述してAPI応答を検証でき、テストの堅牢性と信頼性が確保されます。
- Faker.js: 実際と同様のテストデータが必要な場合、Faker.jsは名前、住所、メールアドレスなどの現実的なデータを生成し、包括的なテストシナリオの作成に最適です。
これらはほんの一例にすぎません。外部ライブラリの世界は非常に広大です! APIテストのニーズに完全に対応するツールを探し、試してみてください。
Apidogで他のプログラミング言語(Java、PHP、Python、Goなど)を利用
また、Apidogは、様々な言語で書かれている外部プログラムを読み込んで実行することもできます。例えば、 .jar、.py、.php、.jsファイルにも対応できます。
Apidogでの外部プログラムは「外部プログラムディレクトリ」に保存されているコードファイルで、Java のアーカイブファイル (.jar) や他のプログラムのソースファイル (.py、.php、.js など) になります。ファイルは「外部プログラムディレクトリ」に置く必要があり、このディレクトリはページの右上にある「設定 -> 外部プログラム」から開くことができます。

Apidogで外部プログラムを利用する手順
Apidogで外部プログラムを呼び出すには、pm.executeAsync() メソッドを使用します。構文は以下の通りで、インターフェースの「前処理/後処理」に記述できます。
await pm.executeAsync(filePath, args, options)
各パラメーターの意味は以下の通りですが、詳細はヘルプドキュメントを参照してください。
- filePath (string): 外部プログラムのパス
- args (string[]): 外部プログラムに渡す引数の配列。各文字列が1つの引数を表します。文字列以外の型の値は自動的に文字列に変換されます。
- options (Object): その他のオプション設定で、以下のプロパティがあります。
- command (string): 外部プログラムの実行コマンド。省略可能で、省略した場合は自動的に推測されます。
- cwd (string): サブプロセスの作業ディレクトリ。省略可能で、デフォルトは「外部プログラムディレクトリ」です。
- env (Record): サブプロセスの環境変数。省略可能で、デフォルトは {}
- windowsEncoding (string): Windowsシステムで使用するエンコーディング。省略可能で、デフォルトは "cp936"
- className (string): 呼び出すjarパッケージ内のクラス名。省略可能で、詳細は jar パッケージ内のメソッドを参照してください。
- method (string): 呼び出すjarパッケージ内のメソッド名。classNameが設定されている場合は必須です。
- paramTypes (string[]): jarパッケージ内のメソッドの引数の型を指定します。省略すると自動的に推測されます。
外部プログラムを用意
まずは、外部プログラムを作成して、それを外部プログラムのディレクトリに保存する必要があります。例えば、Pythonプログラムのadd.pyを作成します。ここで渡したいパラメータや相応のレスポンスが必要です。
# add.py
import sys
# コマンラインパラメータから2つの数字を取得
num1 = int(sys.argv[1])
num2 = int(sys.argv[2])
# この2つの数字の足し算を
result = num1 + num2
# 結果を標準の出力(stdout)にプリント
print(result)

このPythonスクリプト add.py
は、コマンドラインから渡された2つの数値を足し合わせて、その結果を標準出力(stdout)に出力するものです。
1行目では、Pythonの sys
モジュールをインポートしています。 sys
モジュールは、Pythonインタープリタに渡された引数や環境変数などの情報にアクセスするためのモジュールです。
import sys
4行目と5行目では、 sys.argv
を使ってコマンドライン引数から2つの数値を取得しています。 sys.argv
は、コマンドラインで渡された引数をリスト形式で保持しています。リストの先頭の sys.argv[0]
には、Pythonスクリプトのファイル名が入っています。そのため、 sys.argv[1]
と sys.argv[2]
で、最初と2番目の引数を取得し、 int()
関数を使って文字列から整数に変換しています。
num1 = int(sys.argv[1])
num2 = int(sys.argv[2])
7行目では、取得した2つの数値 num1
と num2
を足し算して、結果を result
変数に代入しています。
result = num1 + num2
最後の9行目では、 print()
関数を使って result
の値を標準出力(stdout)に出力しています。
print(result)
このスクリプトを実行する際は、コマンドラインから引数として2つの数値を渡す必要があります。例えば、 python add.py 3 5
と実行すると、標準出力に 8
と出力されます。
前処理・後処理で外部プログラムを利用
以上のように外部プログラムのファイルを用意した上、Apidogの「前処理・後処理」で、この外部プログラムを参照して利用することができます。
前処理か後処理でカスタムScriptを作成して、pm.executeAsync()
メソッドで、外部プログラムを呼び出すことができます。
// pm.executeAsyncでPythonスクリプトを利用
async function callPythonScript() {
// 外部プログラムのパスが add.py
const scriptPath = 'add.py';
// Pythonスクリプトに渡すパラメータ、例えば:2と3を渡す
const args = ['2', '3'];
try {
// Pythonスクリプトの実行結果
const result = await pm.executeAsync(scriptPath, args);
console.log('Result:', result);
} catch (error) {
console.error('Error:', error);
}
}
// Pythonファイルの実行関数
callPythonScript();
上記のコードが少々複雑になっていますが、Apidogでは、以下のように簡略化にしたりすることも可能です:
// 外部プログラムのパスと渡すパラメータのみを記述
const result = await pm.executeAsync('add.py', ['2', '3'])
console.log('Result:', result);
また、固定のパラメータを渡す以外、Apidogでは、変数を利用して外部プログラムに渡すことができます。
// 環境変数の値を読み込む
const scriptPath = pm.environment.get('scriptPath')
const arg1 = pm.environment.get('arg1')
const arg2 = pm.environment.get('arg2')
const result = await pm.executeAsync(scriptPath, [arg1, arg2])
console.log('Result:', result);
上記の方法を参照して、カスタムScriptで外部プログラムを参照して実行すると、Apidogはadd.py
というプログラムを利用して結果を取得できます。

外部プログラム利用中にmacOSでPythonコマンドが見つかりません?
macOSシステムの中では、 デフォルトとしてPython 3がプリインストールされています。そこで、Pythonスクリプトを実行するために、pm.executeAsync()メソッドを利用する場合、commandの値をpython3に指定する必要があります。例えば:
const result = await pm.executeAsync('add.py', ['2', '3'])
まとめ
この記事では、PostmanおよびApidog で外部ライブラリを活用する方法について詳しく説明しました。外部ライブラリを導入する主な方法は、CDNからライブラリをフェッチする方法と、コレクション変数にライブラリコードを保存する方法の2つがあります。CDNから直接導入することでコレクションのコードを簡潔に保つことができ、コレクション変数に保存することで無駄なAPIリクエストを避けられます。
Apidogプラットフォームでは、Postmanと同様にJavaScriptベースの外部ライブラリをインポートしてAPIテストを強化できます。さらに、ローカルでJavaやPythonなど他の言語で書かれたプログラムも、pm.executeAsync()メソッドで読み込んで実行することができます。
外部ライブラリの活用により、PostmanやApidogでのAPIテストをカスタマイズでき、より高度で包括的なテストが可能になります。API開発の効率性と品質を大幅に向上させる強力な手段になることでしょう。