Добавление переменных Postman в тело сообщения JSON внутри полей имени ключа - PullRequest
0 голосов
/ 04 мая 2018

Так что я делаю свои коллекции почтальонов как можно более динамичными, заменяя все статическое содержимое, которое лишь незначительно изменяется при различных вызовах API, на переменные, чтобы значительно снизить рабочую нагрузку.

У меня осталось одно, что я просто не могу приступить к работе, это создание частей тела JSON с переменными.

Вот результат, который я хочу, ключевые значения справа работают просто отлично:

{
  "act.getEntries": {
    "act.authToken": "{{authToken}}",
    "act.resourceId": "{{activelistid}}"
  }
}

Я хочу сделать префикс динамическим для всех моих массивов json, например:

{
  "{{prefix}}.getEntries": {
    "{{prefix}}.authToken": "{{authToken}}",
    "{{prefix}}.resourceId": "{{activelistid}}"
  }
}

Я не могу использовать функцию JS в теле JSON, поэтому я ограничен только экранированием (поэтому использую "" '' +)

Я пытался сделать что-то вроде этого:

{
  "\"" + '{{prefix}}'.getEntries": {
    "act.authToken": "{{authToken}}",
    "act.resourceId": "{{activelistid}}"
  }
}

Но, в конце концов, это вывело тело запроса примерно так:

"{

 "\"" + ""act." + ".getEntries": {

 "act.authToken": "CJvGphuWp4wXOgJq1T6Yr0e_5aU1fvs2pXFDvJPBRnw.",

 "act.resourceId": "Hp2hTKmMBABDdFhotbrvBdw=="

 }

 }"

Если кто-то пробовал это раньше, пожалуйста, дайте мне знать, иначе я просто отмечу это как не поддерживаемое.

В тестах до и после запроса я могу использовать надлежащие функции, чтобы было легко, даже URL создается из переменных, но тело кажется невозможным.

Вне тела, хотя все еще ограничено, я могу легко вставлять переменные в строки следующим образом:

"reference": {
      "id": "",
      "isModifiable": true,
      "managerID": "iqzGK08BABCAXcbW2VGwrg==",
      "referenceName": "ActiveList",
      "referenceString": "<Resource URI=\"/All Active Lists/Personal/" + pm.variables.get("login") + "'s Active Lists/" + activeListName + "\" ID=\"\"/>",
      "referenceType": 24,
      "uri": "/All Active Lists/Personal/" + pm.variables.get("login") + "'s Active Lists/" + activeListName + "\""

1 Ответ

0 голосов
/ 04 мая 2018

Мне кажется, я понимаю вопрос, но могу ошибаться. Мне кажется, это работает нормально:

{
  "{{something}}.getEntries": {
    "{{something}}.authToken": {{my_value}},
    "{{something}}.resourceId": {{my_value}}
  }
}

Я сохраняю их как environment переменные как значения, указанные в теле POST - их можно легко установить в сценарии предварительного запроса.

Request Body

Когда запрос отправляется, он отправляет через значения переменных в теле сообщения POST:

Request Body Sent

Возможно, я неправильно понимаю вопрос и то, что вы пытаетесь достичь, но я рад обновить мой ответ, если вы предоставите более подробную информацию.

...