Почтальон предварительно запросит обновленные данные перед отправкой - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь изменить данные тела запроса перед его отправкой на сервер. Поэтому я выбрал раздел сценария перед запросом, чтобы изменить его.

Сценарий: в теле запроса есть несколько полей для ввода массива в виде URL-адреса. Работая в почтальоне вручную, я обычно дублировал поле по мере необходимости, как показано ниже.

input_data[] = "a"
input_data[] = "b"
input_data[] = "c"

Но счетчик input_data является dynamici c и основан на другом входном значении.

Когда я готовлю тестовый скрипт для чтения данных из данных итерации как для количества, так и для списка его значений. Число Dynami c исходит из файла json при загрузке данных в сборщик данных. Итак, я попытался в сценарии перед запросом прочитать данные итерации и продублировал «input_data []» через l oop. Данные тела запроса обновляются после l oop. Но в коллекции раннер старшего тела отправляется только на сервер. не модифицированный.

Скрипт, который я пробовал в предварительном запросе:

let array_to_body = [
"data_input",
"xyx_input"    
];

console.log(pm.iterationData)

let req = pm.request.body.urlencoded;
let arr_len = array_to_body.length;
for (var i = 0; i < arr_len; i++) {
  let key = array_to_body[i];
  // delete req[key+'[]'];
  req.remove(key + '[]');
  }
 console.log("--After delete---", req);
 //printed modified value - success
 let req_str = req.toString();

 //Preparing sting with repeated keys. If obj or array used, duplicate keys are not possible,
for (var i = 0; i < arr_len; i++) {
let key = array_to_body[i];
let data_for_key = pm.iterationData.get(key);
console.log(key + ":", data_for_key);

if (data_for_key != '' && data_for_key.length > 0) {
    let data_len = data_for_key.length;
    for (var j = 0; j < data_len; j++) {

        req_str += '&' + (key + '[]=' + data_for_key[j]);
    }
  }

}


console.log("encoded string : ", req_str); // expected result came.
pm.request.body.update({
mode: "urlencoded",
"urlencoded": ""
});//Reset the request body - optional.

pm.request.body.update({
mode: "urlencoded",
"urlencoded": req_str
}); // setting the new modified data in req body
console.log("updated - body", pm.request.body.urlencoded); // printed modified keys and values. 
...