您的位置:

如何使用Postman进行循环调用接口

一、环境设置

在使用Postman进行循环调用接口之前,我们需要先设置环境变量和全局变量。在Postman界面左上角点击“Manage Environments”,创建并设置环境变量和全局变量:

环境变量:
url:http://localhost:8080
cookie:{{cookie}}

全局变量:
index:0

其中,我们设置了一个环境变量url,代表我们要请求的接口地址,该地址为http://localhost:8080。在后续的请求中,我们可以直接使用{{url}}代替该地址,方便我们的调试。

除了环境变量,我们还设置了一个全局变量index,初始值为0。在循环调用中,每次调用结束后,我们可以通过设置该变量的值来决定下一次要请求的接口内容。

二、循环请求接口

使用Postman进行循环请求接口的方法有很多,这里我们选用Pre-request Script和Tests来实现。

1、Pre-request Script

Pre-request Script是一个特殊的函数,它可以在每次发送请求之前执行。因此我们可以在该函数中读取全局变量index的值,从而确定我们要请求的接口内容。

// 获取全局变量index的值
var index = parseInt(pm.globals.get('index'));

// 构造要请求的接口地址和请求参数
var url = pm.environment.get('url') + '/user/info';
var request = {
    url: url,
    method: 'POST',
    header: {
        'Content-Type': 'application/x-www-form-urlencoded'
    },
    body: {
        mode: 'urlencoded',
        urlencoded: [
            {key: 'id', value: index},
            {key: 'name', value: 'test'},
            {key: 'age', value: '18'}
        ]
    }
};

// 发送请求
pm.request(request);

// 更新全局变量index的值
pm.globals.set('index', index + 1);

在该脚本中,我们首先从全局变量中获取index的值,并将该值转换为整数类型。然后,我们构造要请求的接口地址和请求参数,并将其保存在request变量中。最后,我们发送请求,并更新全局变量index的值。这样就完成了一次请求。

2、Tests

Tests是另一个特殊的函数,它可以在每次返回请求结果时执行。因此我们可以在该函数中判断当前的请求结果是否正常,如果不正常,则停止后续的循环调用。

// 判断请求结果是否正常
pm.test('response has code 200', function() {
    pm.response.to.have.status(200);
    pm.response.to.not.be.error;
    
    var jsonData = pm.response.json();
    pm.expect(jsonData.code).to.eql(0);
    
    // 停止循环调用
    if (jsonData.data === null) {
        postman.setNextRequest(null);
    }
});

在该脚本中,我们首先判断请求结果的状态码是否为200,并且不包含错误信息。然后,我们从请求结果中解析出返回的Json数据,并判断其中的code字段是否等于0。最后,我们判断jsonData中的data字段是否为null,如果为null,则说明已经请求完所有数据,停止循环调用。

三、循环调用接口额外注意事项

1、请求速率控制

在进行循环调用接口时,由于需要发送大量请求,因此我们需要控制请求的速率。否则容易导致服务器崩溃或者请求失败。

在Postman中,我们可以通过点击界面左上角的“Runner”按钮打开Runner界面,然后在该界面中设置请求的并发数和延迟时间,即可控制请求的速率。

2、请求参数加密

很多情况下,我们的接口会要求对请求参数进行加密处理,以提高数据安全性。在使用Postman进行循环调用接口时,我们需要在Pre-request Script中添加加密逻辑。这里以md5加密为例:

// 获取全局变量index的值
var index = parseInt(pm.globals.get('index'));

// 构造要请求的接口地址和请求参数
var url = pm.environment.get('url') + '/user/info';
var timestamp = Date.now();
var sign = md5(index + 'test' + '18' + timestamp);
var request = {
    url: url,
    method: 'POST',
    header: {
        'Content-Type': 'application/x-www-form-urlencoded'
    },
    body: {
        mode: 'urlencoded',
        urlencoded: [
            {key: 'id', value: index},
            {key: 'name', value: 'test'},
            {key: 'age', value: '18'},
            {key: 'timestamp', value: timestamp},
            {key: 'sign', value: sign}
        ]
    }
};

// 发送请求
pm.request(request);

// 更新全局变量index的值
pm.globals.set('index', index + 1);

在该脚本中,我们使用了md5对请求参数加密。首先,我们获取全局变量index的值,并构造接口地址和请求参数。其中,我们添加了一个timestamp字段表示当前时间戳,以及一个sign字段表示请求参数的md5值。最后,我们发送请求,并更新全局变量index的值。

3、解析返回结果

在使用Postman进行循环调用接口时,我们需要及时处理返回结果。在Test脚本中,我们可以使用pm.response.json()方法解析返回结果,得到返回Json数据。

var jsonData = pm.response.json();
console.log(jsonData);

在该脚本中,我们将返回Json数据打印到控制台中,方便我们调试。