web-dev-qa-db-ja.com

Postmanでパラメーターを要求する方法

一般的に非常に簡単に動作するPostmanのテストを書いています。ただし、要求のデータの一部にアクセスしたいので、正確にはクエリパラメーターを使用します。文字列を返す「request.url」オブジェクトを介してリクエストURLにアクセスできます。 PostmanでこのURL文字列を解析してクエリパラメータにアクセスする簡単な方法はありますか?

14
Deddiekoel

解析せずにURLエンコード形式でクエリ文字列を抽出する場合。方法は次のとおりです。

pm.request.url.getQueryString() // example output: foo=1&bar=2&baz=3
10
Ikbel

pm.request.url.query.all()配列は、すべてのクエリパラメーターをオブジェクトとして保持します。パラメータを辞書として取得するには、次を使用できます。

var query = {};
pm.request.url.query.all().forEach((param) => { query[param.key] = param.value});
12
bbjay

テストを書くために(POSTMANで)request paramsにアクセスしたいと思っていました。 POSTMANで利用可能なrequest.urlを解析することになりました。

const paramsString = request.url.split('?')[1];
const eachParamArray = paramsString.split('&');
let params = {};
eachParamArray.forEach((param) => {
    const key = param.split('=')[0];
    const value = param.split('=')[1];
    Object.assign(params, {[key]: value});
});
console.log(params); // this is object with request params as key value pairs

POSTMAN CLIENTCONSOLE RESPONSE

編集: Github Gist を追加

11
Sudarsan GP

_pm.request.url.query_は PropertyList of QueryParam オブジェクトを返します。たとえば、1つのパラメーターpm.request.url.query.get()またはすべてのpm.request.url.query.all()を取得できます。 PropertyListメソッドを参照してください。

5
HEX

クエリパラメータのPostmanリクエストオブジェクトには、すぐに使用できるプロパティはないと思います。

現在、4つのプロパティが「Request」オブジェクトに関連付けられています。

data {object}-これはリクエストのフォームデータの辞書です。 (request.data [“ key”] ==” value”)headers {object}-これはリクエストのヘッダーの辞書です(リクエスト。 headers [“ key”] ==” value”)method {string}-GET/POST/PUTなど。
url {string}-リクエストのURL。

ソース: https://www.getpostman.com/docs/sandbox

4
Dinesh Kumar

コンソールの様子を見てください:

console.log(request);

リクエストから取得できるすべてが表示されます。次に、リクエストを使用してさまざまなパラメータにアクセスします。テスト名が必要な場合はrequest.name。 URLの特定の要素が必要な場合は、いくつかのコーディングを使用して取得する必要があると思います(私はJavaScriptの初心者です)

お役に立てれば

アレクサンドル

1
A.Joly

ここでは少し遅れていますが、次を使用してURLクエリパラメータの配列を取得し、それらをループして、それらとのキー/値ペアを構築しています

// the message is made up of the order/filter etc params
// params need to be put into alphabetical order
var current_message = '';
var query_params = postman.__execution.request.url.query;
var struct_params = {};

// make a simple struct of key/value pairs
query_params.each(function(param){
    // check if the key is not disabled
    if( !param.disabled ) {
        struct_params[ param.key ] = param.value;
    }
});

uRLがexample.comの場合、配列は空で、構造には何もありません。{}

uRLがexample.com?foo=barの場合、配列には

{
  description: {},
  disabled:false
  key:"foo"
  value:"bar"
}

そして私の構造は{ foo: 'bar' }になります

プロパティの横にあるチェックボックスを切り替えると、disabledプロパティが更新されます。

enter image description here

1
Pete

古い投稿ですが、これが機能するようになりました:

何らかの理由で、デバッガーはpm.request.url.queryを必要なアイテムの配列として認識しますが、アイテムを取得しようとするとすぐに、常にnullになります。つまりpm.request.url.query [0](または.get(0))は、デバッガが0に何かを表示しているにもかかわらず、nullを返します。

理由はわかりませんが、何らかの理由で、デバッガーがそうであると主張しているにもかかわらず、インデックス0にありません。代わりに、最初にクエリをフィルタリングする必要があります。このような:

var getParamFromQuery = function (key)
{
    var x = pm.request.url.query;

    var newArr = x.filter(function(item){
        return item != null && item.key == key;
    });

    return newArr[0];
};

var getValueFromQuery = function (key)
{
    return getParamFromQuery(key).value;  
};

var paxid = getValueFromQuery("paxid");

getParamFromQueryは、キー、値、および無効のフィールドを持つパラメーターを返します。 getValueFromQueryは値のみを返します。