Я пытаюсь изменить данные тела запроса перед его отправкой на сервер. Поэтому я выбрал раздел сценария перед запросом, чтобы изменить его.
Сценарий: в теле запроса есть несколько полей для ввода массива в виде 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.