postman将接口返回结果生成csv文件到本地

本文介绍了如何使用Postman通过预请求脚本和响应数据,模拟API返回的批量参数,将其转换为CSV文件,以便在循环调用接口时使用。作者展示了创建CSV文件的过程,并提供了相关代码示例和本地服务设置指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

postman循环调用接口需要用到参数文件,如果参数值已知直接本地创建csv文件或json文件即可,如果参数值是从其他接口请求的,研究了下同样可以将接口返回结果生成csv文件或json文件到本地以供循环调用。

模拟接口返回批量参数值,测试代码如下:

@Slf4j
@RestController
@RequestMapping("/index")
public class IndexController {

    @PostMapping("/testGetParams")
    private BizResponse<List<WarehouseDto>> testGetParams() {
        List<WarehouseDto> warehouseDtoList = new ArrayList<>();
        WarehouseDto warehouseDto1 = new WarehouseDto();
        warehouseDto1.setId(1L);
        warehouseDto1.setDescription("test1");
        warehouseDtoList.add(warehouseDto1);

        WarehouseDto warehouseDto2 = new WarehouseDto();
        warehouseDto2.setId(2L);
        warehouseDto2.setDescription("test2");
        warehouseDtoList.add(warehouseDto2);
        return ResponseUtil.success(warehouseDtoList);
    }
}

这个接口返回的数据结构如下:
{ "status":1, "code":"10000", "data":[ { "id":1, "description":"test1" }, { "id":2, "description":"test2" } ] }

postman中新建request,并测试将请求返回结果生成csv文件,步骤:

1、添加接口请求url以及请求参数Body

图1—接口

2、在Pre-request Script中添加以下代码:
// The opts for the server, also includes the data to be written to file
// 备注说明:responseData: "id,description\n" 这里的id和description是保存到csv文件的列名,可以自定义,\n用于csv文件内容换行的,
// 这里是请求/index/testGetParams接口之前先保存一个csv文件,内容只有列名,具体的内容值后面Test里面再追加
let opts = {
    requestName: request.name  || request.url,
    fileExtension: 'csv',
    mode: 'appendFile', // Change this to any function of the fs library of node to use it.
    uniqueIdentifier: false,
    responseData: "id,description\n"
};
pm.sendRequest({
    url: 'http://localhost:3000/write',
    method: 'POST',
    header: 'Content-Type:application/json',
    body: {
        mode: 'raw',
        raw: JSON.stringify(opts)
    }
}, function (err, res) {
    console.log(res);
});
3、Test里面添加代码:
//备注说明:这里是接口请求之后的处理逻辑,pm.response.json()就是接口返回的json数据:
// {"status":1,"code":"10000","data":[{"id":1,"description":"test1"},{"id":2,"description":"test2"}]}
var jsonData = pm.response.json();
console.log(jsonData);
var data = jsonData.data;//拿到这个数据:[{"id":1,"description":"test1"},{"id":2,"description":"test2"}]
//因为data里面可能会有很多属性比如"name":"lyc","time":"2022-07-25"等等,这里测试只需要其中的id,description两个属性值保存到csv文件中
for(var i=0;i<data.length;i++){
	var dataStr = data[i].id + "," + data[i].description + (i==data.length-1?"":"\n");
	let opts = {
	    requestName: request.name  || request.url,
	    fileExtension: 'csv',
	    mode: 'appendFile',//这个模式表示往csv里面追加写,单次执行追加写list数据没问题,但是如果多次执行testGetParams接口需要注意将旧文件删除,否则数据可能有问题
	    uniqueIdentifier: false,
	    responseData: dataStr
	};
	
	pm.sendRequest({
	    url: 'http://localhost:3000/write',
	    method: 'POST',
	    header: 'Content-Type:application/json',
	    body: {
	        mode: 'raw',
	        raw: JSON.stringify(opts)
	    }
	}, function (err, res) {
	    console.log(res);
	});
}
4、启动postman本地服务

前面代码中用于生成本地csv文件的请求http://localhost:3000/write需要本地postman服务,安装非常简单。
(1)Github上下载项目:https://github.com/sivcan/ResponseToFile-Postman

git clone https://github.com/sivcan/ResponseToFile-Postman.git
或者直接下载zip

在这里插入图片描述
在这里插入图片描述

(2)安装nodejs
官网下载:https://nodejs.org/zh-cn/download/,下载后一路next安装即可。(我都是默认的路径),安装完成后配置下环境变量,path最后面加上nodejs的安装路径。

在这里插入图片描述在这里插入图片描述

(3)cmd中切换到当前项目目录下,执行命令npm install安装这个项目的依赖
(4)再执行命令node script.js

在这里插入图片描述

一切都准备就绪,这时就可以执行testGetParams这个接口了,可以看到整个执行过程,先写csv,然后调用接口,再循环2次写csv

在这里插入图片描述

执行成功后在项目目录C:\soft\ResponseToFile-Postman\Responses下会有对应的csv文件,如图:

在这里插入图片描述
在这里插入图片描述

1、PostMan接口参数化操作步骤; 2、环境变量设置步骤; 3、A接口返回值例如token赋值给B接口请求参数操作步骤; 图文并茂 1 接口参数化 第一步:点击右上角图标,打开环境配置页面,选择Globals,设置全局变量; 第二步:添加变量名称,设置对应的变量值,保存; 第三步:接口地址或者需要取值的参数value设置;注意需要取值的设置为{{变量名}},双大括号,即可取全局变量设置的值。 TIPS: 如果需要批量修改接口参数等,可导出后编辑,批量替换,再导入即可,注意需要修改接口地址以及下方的参数取值。 2 接口返回值存入环境变量 第一步:查看接口返回值; { "data": { "leaguerId": "161", "token": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiIxNjEiLCJjcmVhdGVkIjoxNTI5NTcyNTkzMTI5LCJleHAiOjE1Mjk1Nzk3OTN9.U6qmR-Qa9sJpwxShLOC8WLPBlhLxWWiQTv5bZtyOV0mdyCSHnFBb_p6T5PBY20m_0m2AmrQZGfrv6hvHCPAaow" }, "status": 200 } 第二步:在接口的TESTS页签中输入以下内容(视返回值情况修改): pm.test("Status code is 200", function () { pm.response.to.have.status(200); }); // 把responseBody转为json字符串 var Jsondata = JSON.parse(responseBody); // 设置环境变量access-token,供后面的接口引用 pm.environment.set("access-token ", Jsondata.data.token ); 第三步:重新发送上一个接口的参数信息测试,执行后查看环境变量;如图,则表示环境变量的值已经正常存储; 3 参数化取其他接口返回值 第一步:修改需要引用上述token值的接口参数取值,参数值value设置为{{access-token}}({{变量名}}),测试接口,正确返回即可;
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值