Apidog

オールインワン協働API開発プラットフォーム

API設計

APIドキュメント

APIデバッグ

APIモック

API自動テスト

Apidogでのリクエストパラメータ取得テクニック:pm.request活用法

この記事では、Apidogでpm.requestオブジェクトとそのメソッドを活用し、URL、パスパラメータ、クエリパラメータ、ボディパラメータ、ヘッダーパラメータを含むリクエストパラメータを簡単に抽出および操作する方法を詳しく解説しました。

中村 拓也

中村 拓也

Updated on 11月 12, 2024

Apidogを使用してAPIのテストを行う場合、現在のテストAPIのリクエストパラメータを他の目的のために抽出する必要がある場合があります。例えば、次のリクエストボディを持つeコマースプラットフォームの注文作成APIを考えてみましょう:

{"id": 12345,"products": [
    {"id": 1, "quantity": 2},
    {"id": 3, "quantity": 1}
  ],"shippingAddress": "xx 県 xx 市 xx 区","paymentMethod": "credit_card"
}

このシナリオでは、次のことを行いたいかもしれません:

  1. リクエストパラメータを抽出して暗号化する:プライバシーを保護するために、送信前にshippingAddressパラメータの値を暗号化する必要があるかもしれません。
  2. リクエストパラメータを変数として保存する:idパラメータを「一時変数」として設定し、その後のAPIテスト(例えば、注文状況の確認)で使用する必要があるかもしれません。
  3. リクエストパラメータを検証する:リクエストを送信する前に、paymentMethodパラメータが有効な値かどうかを確認する必要があるかもしれません。

これを処理するには、pm.requestメソッドを使用してAPIからリクエストパラメータを抽出できます。さまざまなパラメータ情報を表示するカスタムスクリプトを作成し、pm.requestをコンソールに印刷できます。例えば:

// 現在のAPIのリクエストパラメータ情報console.log(pm.request);
pm.request

このメソッドのrequestはAPIのリクエストオブジェクトを指します。「プレリクエスト」スクリプトでは「保留中のリクエスト」を表し、「ポストリクエスト」スクリプトでは「送信されたリクエスト」を指します。

要件に基づいて、プレリクエストまたはポストリクエストスクリプトで現在のリクエストパラメータを取得するかを決定できます:

  • リクエストを送信する前のパラメータについて:プレリクエストスクリプトを使用します。
  • リクエストを送信した後のパラメータについて:ポストリクエストスクリプトを使用します。

「プレリクエスト」スクリプトで行った変更のみが有効であることに注意してください。「ポストリクエスト」スクリプトで行った変更は効果を持ちません。

他のAPIからリクエストパラメータを取得するには、環境変数にパラメータを保存してから読み込むか、「テスト」機能を使用できます。「動的値」を使うことで、前のステップ(つまり、他のAPI)からリクエストパラメータやレスポンスデータを直接読み取ることができます。

Extract Scope
ボタン

リクエストパラメータを抽出するステップバイステップガイド

プレリクエストURLを取得する

プレリクエストURLは「環境管理」で設定されたサービスアドレスです。

プレリクエストURLを取得する

現在のAPIのプレリクエストURLを取得するには、pm.request.getBaseUrl()またはpm.request.baseUrlメソッドを使用できます。例えば:

// プレリクエストURLを取得する
let preUrl = pm.request.getBaseUrl();
console.log(preUrl);

// あるいは
let baseUrl = pm.request.baseUrl;
console.log(baseUrl);
pm.request.getBaseUrl()

複数のプレリクエストURLが設定されている場合、スクリプトは指定されたサービスに対応するURLを取得します。これらの設定は「編集→サービス(プレリクエストURL)」を通じて確認および管理できます。

サービス設定

パスパラメータを取得する

パスパラメータは、リソースパスを指定するために使用されるURLの一部で、特定のリソースやコレクションを識別する際に使用されます。Apidogでは、パスパラメータは波かっこ{}を使用して表現され、URLパスに直接含まれます。例えば:

https://Apidogmock.com/xxx/xxx/store/products/{id}

この例では、{id}は動的に置き換えることができるパスパラメータです。pm.request.url.pathを使用してパスパラメータを抽出でき、これによりすべてのパス名を含む配列が返され、配列インデックスを使用して正確にアクセスできます:

// pm.request.url.pathからパスパラメータを取得する
let getPathUrl = pm.request.url.path;

// データをコンソールに印刷console.log(getPathUrl);
console.log(getPathUrl[4]);
パスパラメータの置き換え

クエリパラメータを取得する

クエリパラメータは、通常、疑問符?の後に続く追加情報で、キーと値のペアとしてフォーマットされ、&で区切られます。例えば:

https://Apidogmock.com/xxx/xxx/store/products/{id}?cart_id=42&region_id=43

クエリパラメータを抽出するには、pm.request.url.queryを使用します。これによりすべてのキーペアが取得できます。その後、get()メソッドを使用して、特定のパラメータを取得できます。以下は、cart_idパラメータを抽出する方法です:

// pm.request.url.queryからクエリパラメータを取得する
let getQueryUrl = pm.request.url.query;

// データをコンソールに印刷console.log(getQueryUrl);
console.log(getQueryUrl.get("cart_id"));
クエリパラメータを取得する

完全なURLを取得する

リクエストの完全なURLを取得するには、プレリクエストURL、パスパラメータ、およびクエリパラメータを含む、pm.request.url.toString()メソッドを使用します:

// 完全なURLをコンソールに印刷console.log(pm.request.url.toString());

このメソッドは、すべてのURL情報を含む文字列を返し、パスパラメータの動的置き換えやすべてのクエリパラメータを含みます。

完全なURLを取得する

ボディパラメータを取得する

  • form-data形式の場合:Form-dataはデータをキーと値のペアで整理し、ファイルのアップロードや複雑なフォームの送信によく使用されます。form-dataボディパラメータを取得するには、pm.request.body.formdataを使用します。これにより配列オブジェクトが返されます:
// ボディタイプがform-dataの場合
let formData = pm.request.body.formdata;

// データをコンソールに印刷console.log(formData);
console.log(formData.get("email"));
console.log(formData.get("password"));
form-data
  • x-www-form-urlencoded形式の場合:form-dataと同様に、x-www-form-urlencodedもキーと値のペアを使用します。これらのパラメータを取得するには、pm.request.body.urlencodedを使用します:
// ボディタイプがx-www-form-urlencodedの場合
let urlencoded = pm.request.body.urlencoded;

// データをコンソールに印刷console.log(urlencoded);
console.log(urlencoded.get("email"));
console.log(urlencoded.get("password"));
x-www-form-urlencoded形式の場合
  • raw、JSON、またはXML形式の場合:pm.request.body.rawを使用して、生のボディコンテンツを取得し、文字列を返します。特定のパラメータにアクセスするには、通常、解析が必要です:
// raw、JSON、またはXML形式の場合
let formData = pm.request.body.raw;
// JSONオブジェクトに解析する
let jsonData = JSON.parse(formData);
// データをコンソールに印刷
console.log(jsonData);
console.log(jsonData.email);
console.log(jsonData.password);
raw、JSON、またはXML形式の場合

ヘッダーパラメータを取得する

リクエストのヘッダーパラメータを取得するには、pm.request.headersを使用します。これにより、すべてのリクエストヘッダー情報を含む配列オブジェクトが返されます。特定のパラメータ値を正確に見つけて抽出するには、get()関数を使用します:

// リクエストヘッダーパラメータを取得する
let headers = pm.request.headers;

// データをコンソールに印刷console.log(headers);
console.log(headers.get("Accept"));

リクエストパラメータ取得のFAQ

参照された変数が置き換えられない理由は何ですか?

APIリクエストパラメータが環境変数の値を参照しているが、コンソールの特定の値に置き換えられていない場合は、「変数の置き換え&親を継承」をプレリクエストまたはポストリクエストセクションのスクリプトの最初に移動してください。これにより、すべての参照された変数(動的値を含む)が実際の内容に置き換えられます。

付録

メソッドと説明

メソッド 説明 目的
pm.request 現在のインターフェースのリクエストパラメータ情報を取得する リクエストオブジェクトにアクセスする
pm.request.getBaseUrl() プレリクエストURLを取得する サービスアドレスを取得する
pm.request.baseUrl プレリクエストURLを取得する(代替メソッド) サービスアドレスを取得する
pm.request.url.path パスパラメータを取得する URLパスパラメータを抽出する
pm.request.url.query クエリパラメータを取得する URLクエリパラメータを抽出する
pm.request.url.toString() 完全なURLを取得する 完全なURL内のすべてのパラメータを取得する
pm.request.body.formdata form-dataボディパラメータを取得する フォームデータを抽出する
pm.request.body.urlencoded x-www-form-urlencodedボディパラメータを取得する URLエンコードされたフォームデータを抽出する
pm.request.body.raw 生、JSON、またはXMLボディパラメータを取得する 生のリクエストボディコンテンツを抽出する
pm.request.headers ヘッダーパラメータを取得する リクエストヘッダー情報を抽出する
JSON.parse() JSON文字列を解析する JSON文字列をJavaScriptオブジェクトに変換する

結論

この記事では、プレリクエストURL、パスパラメータ、クエリパラメータ、ボディパラメータ、およびヘッダーパラメータを含む、Apidogでのリクエストパラメータの抽出方法を説明しました。pm.requestオブジェクトとその関連メソッドを使用することで、さまざまなリクエストデータを簡単に取得および操作できます。

ボタン
ApidogでバックエンドAPI開発の効率をどう向上させるか?チュートリアル

ApidogでバックエンドAPI開発の効率をどう向上させるか?

ApidogはAPI管理の全体的なソリューションを提供し、定義からデバッグ、ドキュメント作成までバックエンド開発を最適化します。プロジェクトの規模に関わらず、開発者が効率的に作業を完了するのを支援します。

中村 拓也

11月 25, 2024

APIテスト効率化:ApidogでのJSONレスポンス管理法チュートリアル

APIテスト効率化:ApidogでのJSONレスポンス管理法

この記事では、ApidogでJSONレスポンスからアサーション設定、変数抽出、JSONパスのコピー方法を解説しました。APIテストの自動化と効率的なレスポンス検証が簡単になり、データの再利用も可能です。Apidogを使い、API機能を確認しましょう。

中村 拓也

11月 20, 2024

ApidogとAlgolia統合で実現する効率的なドキュメント検索チュートリアル

ApidogとAlgolia統合で実現する効率的なドキュメント検索

本記事は、AlgoliaをApidogと統合し、APIドキュメントの検索機能を改善する方法を紹介します。最適な検索設定を維持しながら、情報アクセスの迅速さと効率性を向上させ、ユーザー体験を向上させます。

中村 拓也

11月 19, 2024