Как регистрировать ответы API в консоли и сохранять в файл данных с помощью pm.sendRequest
Я довольно новичок в Почтальоне.
Я пытаюсь сгенерировать файл с использованием XML API и записать данные в консоль Postman, просматривая различные параметры запроса (в моем случае [DateOut]). Файл, который я пытаюсь сгенерировать, должен выглядеть так:
DateOut | PickupLocationCode | ItemType | Статус
19.10.2008 | YVR | A100 | Имеется в наличии
20.10.2008 | YYC | A200 | По запросу
Я узнал, как пройтись по файлу данных и получить правильные ответы (в Postman Runner под Body Response). Мой файл цикла данных (CSV) выглядит так:
DateOut | PickupLocationCode
19.10.2008 | YVR
20.10.2008 | YYC
Мой запрос API выглядит так:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<GetItemTypeStatus xmlns="http://someurl.org/">
<Credentials>
<Agent>the_username</Agent>
<Password>the_password</Password>
</Credentials>
<Data>
<PickupLocationCode>{{PickupLocationCode}}</PickupLocationCode>
<DateOut>{{DateOut}}</DateOut>
</Data>
</GetItemTypeStatus>
</soap:Body>
</soap:Envelope>
Вот мой ответ API:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<GetItemTypeStatusResponse xmlns="http://tempuri.org/">
<GetItemTypeStatusResult>
<StatusInfo>
<Success>succeeded</Success>
<Remarks>Available</Remarks>
</StatusInfo>
<ItemsStatus>
<ItemStatus>
<PickupLocationCode>YVR</PickupLocationCode>
<ItemTypeID>109</ItemTypeID>
<ItemType>A100</ItemType>
<Status>Available</Status>
</ItemStatus>
</ItemsStatus>
</GetItemTypeStatusResult>
</GetItemTypeStatusResponse>
</soap:Body>
</soap:Envelope>
Перед записью значений в консоль я установил следующие переменные в разделе "Сценарий предварительного запроса":
pm.environment.set("DateOut", "01/01/2018");
pm.environment.set("PickupLocationCode", "YVR");
Я использую тест ниже в Postman, чтобы записать значения в консоль. Источник: извлеките значение из XML-ответа и установите его в качестве глобальной переменной в Postman.
// Convert XML output to JSON format
var jsonObject = xml2Json(responseBody);
//Add Departure Date
let departuredate = pm.iterationData.get("DateOut");
//console.log("Departure Date: ", departuredate);
// Take care of Envelope and Body tags, grab data and add DateOut
var activeStatus = jsonObject['soap:Envelope']['soap:Body'].GetItemTypeStatusResponse.GetItemTypeStatusResult.ItemStatus.ItemStatus.concat(departuredate);
// Assigning the extracted value in to a global variable
pm.globals.set ("availability", JSON.stringify(activeStatus));
console.log(['Status '] + pm.globals.get("availability"));
Вот скрипт, который записывает ответ API в файл. Для этого нужен локальный сервер, но настройка была очень простой. Источник: https://documenter.getpostman.com/view/3407886/RWgp1fB5
let dataToFile = {
requestName: request.name || request.url,
fileExtension: 'xml',
responseData: pm.response.text()
};
pm.sendRequest({
url: 'http://localhost:3000/write',
method: 'POST',
header: 'Content-Type:application/json',
body: {
mode: 'raw',
raw: JSON.stringify(dataToFile)
}
}, function(err, res) {
console.log(res);
});
Что я еще не выяснил, так это как записать в файл только значения в тегах, а не весь ответ API. Буду признателен за любую помощь в этом.
Большое спасибо.