Как использовать подстроку переменной в параметре или другой переменной?

#postman

#postman

Вопрос:

Я могу использовать

 {{guid}}
  

чтобы получить идентификатор для параметров тела, который я могу использовать для идентификатора новой записи.
Как мне использовать подстроку guid в postman либо в этой переменной param (которая, кстати, является уровнем сбора), либо через другую переменную?

Я пробовал различные, такие как

 {{$guid.substring(10)}}
{{$guid}.substring(10)}
  

но они не сработали

введите описание изображения здесь

Я попытался использовать сценарий предварительного запроса, подобный этому:

 pm.collectionVariables.set("short_guid", pm.collectionVariables.get("myGUID").substr(12) )
  

используя переменную myGUID моей коллекции, которая определяется как {{guid}}

наряду с

     "email": "{{$pm.collectionVariables.get('myGUID')}}@example.com",
  

но это не работает, поскольку переменная не интерпретируется, и я получаю строковый литерал

Комментарии:

1. Вы видели что-то, что заставило вас думать, что вы должны иметь возможность запускать произвольные JS в этих заполнителях? Я бы ожидал, что для этого потребуется сценарий предварительного запроса.

2. Сценарий предварительного запроса выглядит как хороший подход. Я изучу это

3. Пытаюсь, но пока не получается (информация добавлена выше).

4. Единственный способ добиться этого — использовать скрипт предварительного запроса для создания необходимого вам значения для запросов. Это должно установить переменную коллекции в качестве этого динамического значения guid — pm.collectionVariables.set("short_guid", pm.variables.replaceIn("{{$guid}}")) вы должны иметь возможность использовать {{short_guid}} переменную в теле запроса. Это не дает вам substr, но, надеюсь, это имеет смысл.

5. На вашем скриншоте вы используете guid , но во фрагментах кода это myGUID . Может ли это быть проблемой? Непоследовательные имена?

Ответ №1:

вы должны ссылаться на переменную в теле как {{

для предварительного запроса :

 var uuid =  require("uuid")
var myUUID = uuid.v4(); 

pm.environment.set("myuuid",myUUID.substring(20))

console.log(pm.environment.get("myuuid"))
  

И в теле

 {
    "email": {{myuuid}}
}
  

вы также можете использовать переменные в разделе скрипта как:

 console.log(pm.variables.replaceIn("{{$guid}}").substring(20))
  

Это сначала заменит {{$guid}} значением переменной postman, а затем найдет подстроку

вы можете использовать это как

         console.log(pm.variables.replaceIn("this will print {{variable}} value"))
  

Ответ №2:

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

В postman область действия переменной находится справа налево, но приоритет — слева направо следующим образом:

Локальная> данные> среда> коллекция> глобальная

Итак, если у вас есть переменная среды и переменная коллекции с тем же именем, значение этой переменной будет из среды, а не из коллекции