PostMan: для огромного запроса данных, я хочу, чтобы мой ввод был выполнен в виде внешнего файла JSON, и, действительно, необходимо переместить все тело на одну итерацию - PullRequest
0 голосов
/ 30 апреля 2018

Детали приложения:

Почтальон для Win7 / x64

Отчет о проблеме:

  1. Для огромного запроса данных я хочу, чтобы мой ввод был выполнен в виде внешнего файла JSON, и, действительно, для повторного размещения всего тела за итерацию.
  2. Ожидаемое поведение: тело запроса может заменить моя переменная при запуске из Коллекции
  3. Скриншоты: прилагается

Шаги для воспроизведения

  1. Мой файл Json в Runner Collection в качестве входных данных:

        [{
         "rename": {"AssetId": 5496,"NewName": "API-CK9-2st"},
         "addfolderto": {"FolderId": 5456,"FolderName": "API-CK1"}
        }]    
    
  2. И в моем сценарии предварительного запроса:

    var envRename = pm.iterationData.get("rename");
    pm.environment.set("rename", envRename );
    
  3. И в Моем Теле я пытаюсь напрямую использовать env. переменная для замены тела, например:

     {{rename}}
    
  4. Затем после запуска скрипта моё тело запроса заменяется на:

        Request Body:"[object Object]"
    

    вместо моего ввода json.

Снимок экрана:

Postman Console log with my comments

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

Ответы [ 2 ]

0 голосов
/ 26 августа 2018

Необходимо изменить имя переменной. Так что, если iterationData содержит переменную rename, ее следует переименовать в foo. затем в теле вызова почтальона используйте {{foo}} Область видимости переменной iterationData переопределяет все остальные области.

0 голосов
/ 30 апреля 2018

Вы можете использовать функцию JSON.stringify () для переменной iterationData, а затем использовать синтаксис {{...}} в теле запроса.

Вот пример этого локально с использованием другого API, но с использованием того же подхода, он должен работать для того, что вам нужно.

Если вы не обернете переменную iterationData функцией JSON.stringify(), вы увидите [object Object], отправленное в качестве данных тела запроса POST:

enter image description here


Вот мое решение:

Добавление функции JSON.stringify() к вкладке Pre-Request Script и добавление к ней pm.interationData.get('my_object') следующим образом:

enter image description here

Затем добавьте синтаксическую переменную {{new_object}} в тело запроса. Это значение теперь имеет формат JSON stringify'd:

enter image description here

В Collection Runner выберите файл данных, который вы хотите использовать. Я использую файл JSON с key 'my_object' и value как объект JSON, а не как одно значение. Предварительный просмотр этого файла можно посмотреть здесь:

enter image description here

Когда коллекция или запрос запускается из Collection Runner, он принимает значение этого объекта и использует его в теле запроса. Поскольку я использовал функцию JSON.stringify() в Pre-Request Script, она не будет такой, как [object Object], которую мы видели в начале.

enter image description here

...