Как создать функцию генератора, которую можно использовать несколько раз в запросе почтальона? - PullRequest
0 голосов
/ 13 февраля 2019

Я хочу создать функцию, которая используется внутри тела запроса.

Каждый раз, когда вызывается функция, она возвращает другое значение;число, которое увеличивается на 1 при каждом вызове.

Я хочу вызывать эту функцию несколько раз в запросе почтальона, чтобы вставить последовательность чисел в тело запроса.

например,

{
    "first": {nextSequenceNumber()},
    "second": {nextSequenceNumber()},
    "third": {nextSequenceNumber()},
    "fourth": {nextSequenceNumber()},
}

Есть ли способ сделать это?

Ответы [ 3 ]

0 голосов
/ 13 февраля 2019

Вы можете взять функцию Generator и получить свойство value вызова next.

function* getNext(i) {
    while (true) yield i++;
}

var sequenceNumber = getNext(0),
    object = {
        first: sequenceNumber.next().value,
        second: sequenceNumber.next().value,
        third: sequenceNumber.next().value,
        fourth: sequenceNumber.next().value
    };

console.log(object);

То же, завернутый в крышку

function* getNext(i) {
    while (true) yield i++;
}

var sequenceNumber = (gen => gen.next().value)(getNext(0)),
    object = {
        first: sequenceNumbert(),
        second: sequenceNumber(),
        third: sequenceNumber(),
        fourth: sequenceNumber()
    };

console.log(object);
0 голосов
/ 13 февраля 2019

Это ужасный хакерский способ сделать это, но он даст вам объект, который выглядит следующим образом:

{  
   "first":1,
   "second":2,
   "third":3,
   "forth":4
}

Если вы добавите это к Pre-Request Script вашего запроса:

var n = 0;
function increment() { return ++n; }

function requestBody(first, second, third, forth) {
  this.first    = first
  this.second   = second
  this.third    = third
  this.forth    = forth
}

let myData = new requestBody(increment(), increment(), increment(), increment())
pm.globals.set('bodyData', JSON.stringify(myData))

Вы можете просто использовать переменную {{bodyData}} в качестве тела запроса:

Postman

Опять же, это не очень хорошее решениено это может быть чем-то, что можно повторить.

0 голосов
/ 13 февраля 2019

Вы можете построить объект как javascript в декларативном стиле со встроенными вызовами.

let response = {body: {
"first": {nextSequenceNumber()},
"second": {nextSequenceNumber()},
"third": {nextSequenceNumber()},
"fourth": {nextSequenceNumber()}}};

response.body.someField = ‘foo’(

В своем блоке возврата (используя express.js и т. Д.) Отправьте созданный вами объект JS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...