一般的に非常に簡単に動作するPostmanのテストを書いています。ただし、要求のデータの一部にアクセスしたいので、正確にはクエリパラメーターを使用します。文字列を返す「request.url」オブジェクトを介してリクエストURLにアクセスできます。 PostmanでこのURL文字列を解析してクエリパラメータにアクセスする簡単な方法はありますか?
解析せずにURLエンコード形式でクエリ文字列を抽出する場合。方法は次のとおりです。
pm.request.url.getQueryString() // example output: foo=1&bar=2&baz=3
pm.request.url.query.all()
配列は、すべてのクエリパラメーターをオブジェクトとして保持します。パラメータを辞書として取得するには、次を使用できます。
var query = {};
pm.request.url.query.all().forEach((param) => { query[param.key] = param.value});
テストを書くために(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
編集: Github Gist を追加
_pm.request.url.query
_は PropertyList of QueryParam オブジェクトを返します。たとえば、1つのパラメーターpm.request.url.query.get()
またはすべてのpm.request.url.query.all()
を取得できます。 PropertyList
メソッドを参照してください。
クエリパラメータのPostmanリクエストオブジェクトには、すぐに使用できるプロパティはないと思います。
現在、4つのプロパティが「Request」オブジェクトに関連付けられています。
data {object}-これはリクエストのフォームデータの辞書です。 (request.data [“ key”] ==” value”)headers {object}-これはリクエストのヘッダーの辞書です(リクエスト。 headers [“ key”] ==” value”)method {string}-GET/POST/PUTなど。
url {string}-リクエストのURL。
コンソールの様子を見てください:
console.log(request);
リクエストから取得できるすべてが表示されます。次に、リクエストを使用してさまざまなパラメータにアクセスします。テスト名が必要な場合はrequest.name。 URLの特定の要素が必要な場合は、いくつかのコーディングを使用して取得する必要があると思います(私はJavaScriptの初心者です)
お役に立てれば
アレクサンドル
ここでは少し遅れていますが、次を使用して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
プロパティが更新されます。
古い投稿ですが、これが機能するようになりました:
何らかの理由で、デバッガーは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は値のみを返します。