Распознать id из текста ответа от сервера и занести значение в xml след. запроса

столкнулся с проблемой. глубоких познаний использования postman нет.

в общем: есть сервер, на который отправляю GET запрос с определенными параметрами для создания Заказа (Order). в ответ от сервера получаю текст ввиде:

"P", "123456", "man_char", "Accepted"

проблема в следующем:

  1. не могу написать тест (Test) в postman для того, чтоб распарсить значение “123456” (Order id)
  2. и затем, дальше использовать это значение (переменную) в следующем запросе

По п. 1 понимаю, что нужны знания js, но у меня нет их, а нагуглить не удается найти подходящий код
По п. 2, я так понимаю делается через переменную, но в любом случает зависит от п. 1

Если у вас response в json, то вам может помочь данная ссылка. Там есть примеры кода.

спасибо за ссылку, но в том-то и проблема, что ответ не в json, а текст, пример приведен в теле проблемы ("P", "123456", "man_char", "Accepted")

Если Postman поддерживает такое, то можно использовать следующий код чтобы достать (вместо переменной text используйте responseBody):

var text = "\"P\", \"123456\", \"man_char\", \"Accepted\"";
console.log(text)
var arr = text.split("\"");
var id = arr[3];
console.log(id)

Последняя команда выведет конкретно id.
А чтобы сохранить в переменную постмана, это уже в предыдущую ссылку.

Спасибо за предложенный вариант, но попробовав его, не совсем понял как переменную в id "123456", т. е. в тесте у меня был бы захардкожено значение "123456", при том что при создании Заказа генерируется постоянно новый id.

Проблему обошел - выполняя запрос к БД - ответ от БД стал получать в формате "ключ" : Значение. Но здесь столкнулся с другой проблемой и пока не могу разобраться с ней:

Проблема в том, как order_id из ответа от БД передать в переменную для следующего запроса

  1. получил ответ от БД в виде

[

{

“order_id”: 111

}

]

  1. В Postman, в запросе к БД создаю Tests

var jsonData = JSON.parse(responseBody);

postman.setEnvironmentVariable("newrestdb", jsonData.order_id);

И вот здесь проблема - в "переменных" (Environment), после выполнения запроса, создается переменная newrestdb, но при этом значение переменной не присваивается - ожидал, что туда подставится номер order_id из ответа п.1 (111). Грешу на формат ответа (квадратные скобки) [{"order_id": 111}]

Подскажите как распарсить значение order_id из подобной формы записи

Это у вас массив данных. Для меня сработало такое:

text = "[{\"order_id\": 111}]"
var obj = JSON.parse(text);
console.log(obj[0].order_id)

не совсем понимаю, как такой способ может быть гибким?

text = "[{\"order_id\": 111}]"
var obj = JSON.parse(text);
console.log(obj[0].order_id)

т. е. опираясь на код выше, если верно понял, id Заказа - фиксированный.

По факту - я генерирую каждый раз новый Заказ, соответственно id Заказа будет увеличиваться (112, 113 и т. д.). А судя по тесту id Заказа подразумевается быть фиксированным (111).

Мне парсить id Заказа необходимо для составления цепочки запросов

Это ваш респонс.
Вторая строчка парсит его в Json object.
Третья строчка у меня просто выводит значение - в данном случае “111”. Я просто привел пример парсинга и вытаскивания нужной вам переменной.
Если я правильно понял, то вам надо:
postman.setEnvironmentVariable("newrestdb", obj[0].order_id);

Понял, спасибо!

Оставлю полностью код рабочего теста ниже:

var jsonData = JSON.parse(responseBody);

postman.setEnvironmentVariable("newrestdb", jsonData[0].order_id);

п. с. не смог сразу разобраться с переменной:

jsonData

1 лайк