如何创建可以在邮递员请求中多次使用的生成器函数?

时间:2019-02-13 12:37:33

标签: javascript rest templates request postman

我想创建一个在请求正文中使用的函数。

每次调用该函数时,它都会返回一个不同的值;每次调用时增加1的数字。

我想在邮递员请求中多次调用此函数,以便在请求正文中插入一系列数字。

例如

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

有没有办法做到这一点?

3 个答案:

答案 0 :(得分:0)

您可以使用内联调用以声明式将对象构建为javascript。

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

response.body.someField = ‘foo’(

在您的返回块中(使用express.js等),发送您构建的JS对象。

答案 1 :(得分:0)

您可以使用Generator函数并采用next调用的value属性。

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);

答案 2 :(得分:0)

这是一种骇人听闻的技巧,但是它会给您一个看起来像这样的对象:

{  
   "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

同样,它不是一个很好的解决方案,但是可能是需要迭代的东西。