Apidog

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

API設計

API仕様書生成

APIデバッグ

API Mock

APIテスト自動化

無料登録
Home / Apidogのプレリクエスト/ポストリクエストスクリプトでリクエストパラメータを取得する方法は?

Apidogのプレリクエスト/ポストリクエストスクリプトでリクエストパラメータを取得する方法は?

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のニュースレターを購読する

今すぐ購読すると、いつでもApidogから更新情報と最新観点を手に入れることができます。

有効なメールアドレスを入力してください。
ネットワークエラー、後で再試行してください
購読していただきありがとうございます!