Postman之数据提取

ops/2024/11/19 9:53:29/

Postman之数据提取

      • 1. 提取请求头\request中的数据
      • 2. 提取响应消息\response中的数据
      • 3. 通过正在表达式提取
      • 4. 提取cookies数据

本文主要讲解利用pm对象对数据进行提取操作,虽然postman工具的页面上也提供了一部分的例子,但是实际使用时不是很全面,因此总结记录一下工作中常用到的pm对象相关方法

1. 提取请求头\request中的数据

pm.request:获取请求头的所有消息,包括url、请求头、请求方法、请求体等,返回的是一个对象

在这里插入图片描述
在这里插入图片描述
当看懂了pm.request后,想要获取具体的数据就很简单了不需要去死记,只需要通过节点一层层的去取就行了
如:需要获取port的值,则只需要pm.request.port即可,格式:pm.request.xxx.xxx
示例:

#获取请求头所有数据
value0 = pm.request
#获取端口
value1 = pm.request.url.port
#获取请求协议
value2 = pm.request.url.protocol
#获取请求方法
value3 = pm.request.method
#获取请求体
value4 = JSON.parse(pm.request.body.raw)['out_trade_no']
#在控制台打印
console.log(value0,value1,value2,value3,value4)
#查看数据的类型
console.log(typeof(value4))

注意:需要注意的是获取请求体时,返回的实际是一个字符串;当我们要获取里面的具体某个参数时,要先将字符串转换成JSON格式对象,然后通过key去取对应的值;格式:JSON.parse(需要转换的值)['key']
如:上面演示的:需要转换的值就是:pm.request.body.raw的返回值,key就是:out_trade_no

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

将JSON字符串转解析为对象:
JSON.parse(xxx_vaule)

将对象转换为JSON字符串:
JSON.stringify(xxx_value)

将对象序列化为JSON字符串:
objectname.toJSON()

转换为字符串
objectname.toString()

数据的提取,重点在于数据的类型、格式,合理的运用以上内容格式的转换可以更方便的对数据进行操作、提取

2. 提取响应消息\response中的数据

  1. pm.response

pm.response:返回响应头所有的数据,返回的是一个对象
如图:

在这里插入图片描述
同样的需要取里面的内容时,只需要用返回来的对象,通过节点一层层的去取就行,格式:pm.response.xxx.xxx

如:

//返回响应头所有的数据
value0 = pm.response
//返回响应状态
value1 = pm.response.status
//返回响应码
value2 = pm.response.code
//获取header中key对应的值,注意获取header,需要用pm.response.headers
value3 = pm.response.headers.toJSON()[0]['key']
//控制台打印日志
console.log(value0,value1,value2,value3)

在这里插入图片描述

  1. pm.response.text()
    pm.response.text():以文本的形式返回响应数据
//以文本形式返回响应数据
value0 = pm.response.text()
console.log(value0)
console.log(typeof(value0))

如图:

在这里插入图片描述
4. pm.response.josn()

pm.response.josn():以json对象的形式返回响应数据

//以son对象的形式返回响应数据
value0 = pm.response.josn()
console.log(value0)
console.log(typeof(value0))

如图:

在这里插入图片描述
数据提取演示:

{"code": "40004","msg": "Business Failed","sub_code": "ACQ.TRADE_HAS_SUCCESS","sub_msg": "交易已被支付","trade_no": "2013112011001004330000121536","out_trade_no": "6823789339978248","testArr": [{"id": "1","version": "testV1.0.1","num": "99999"},{"id": "2","version": "testV1.0.2","num": "66666"}]
}
//以son对象的形式返回响应数据
value0 = pm.response.json()
//取code的值
value1 = pm.response.json()['code']
//取testArr的值
value2 = pm.response.json()['testArr']
//取testArr中的第一个version
value3 = pm.response.json()['testArr'][0]['version']
console.log(value0,value1,value2,value3)

结果如图:

在这里插入图片描述

3. 通过正在表达式提取

objectname.match('表达式'):匹配规则对应的内容,注意只能字符串类型的值进行匹配,因此对于非字符串,则需要先转换为字符串才能使用
数据提取演示:

{"code": "40004","msg": "Business Failed","sub_code": "ACQ.TRADE_HAS_SUCCESS","sub_msg": "交易已被支付","trade_no": "2013112011001004330000121536","out_trade_no": "6823789339978248","testArr": [{"id": "1","version": "testV1.0.1","num": "99999"},{"id": "2","version": "testV1.0.2","num": "66666"}]
}
//匹配testArr中第一个version
//匹配testArr中第一个version
value0 = pm.response.text().match('"1","version":"(.*?)","num"')
//匹配header中的Content-Type的值
value1 = JSON.stringify(pm.response.headers).match('Content-Type","value":"(.*?)"}]')
//匹配请求头中的host
value2 = JSON.stringify(pm.request.headers).match('"Host","value":"(.*?)"')
console.log(value0,value0[1],value1,value1[1],value2,value2[1])

在这里插入图片描述

4. 提取cookies数据

#检查指定cookies是否存在
pm.cookies.has("name")
#获取指定名称的cookies
pm.cookise.get("name")
#将cookies以对象的形式返回
pm.cookies.toObject()

http://www.ppmy.cn/ops/134927.html

相关文章

ssm135连锁经营商业管理系统+jsp.zip

毕 业 设 计(论 文) 题目:连锁经营商业管理系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本连锁经营商业…

成本400元,DIY一个高刷新率热成像相机

在市面上开源的热成像作品中,有一部分颜值高,但分辨率太低;也有一部分把分辨率提高了,但使用起来却不太流畅。 基于此,作者本人结合二者的优势,设计了一款热成像相机——LiThermal,成本算下来只…

基于YOLOv8深度学习的无人机视角军事打击目标检测系统研究与实现(PyQt5界面+数据集+训练代码)

随着无人机技术的迅速发展及其在军事领域的广泛应用,精准目标检测逐渐成为现代战场中提升打击效能和战术决策的关键技术之一。无人机因其灵活性、机动性和高效性,已经成为现代战争中不可或缺的侦察与打击工具。在复杂多变的战场环境中,及时、…

使用 IntelliJ IDEA 编写 Spark 应用程序(Scala + Maven)

使用 IntelliJ IDEA 编写 Spark 应用程序(Scala Maven) 本教程演示如何使用 IntelliJ IDEA 和 Maven 编写 Spark 应用程序(以 WordCount 程序为例)。运行环境为 Ubuntu 16.04。 环境准备 安装 IntelliJ IDEA (1&am…

【算法设计与分析】期末复习题

试证明:10n的平方-2nΘ(n的平方) 2.为什么用分治法设计的算法一般有递归调用? 答:子问题的规模很大时,必须继续使用分治法,反复分治,必然要用到递归。 3.衡量一个算法优劣的主要性能标准有哪…

连续九届EI稳定|江苏科技大学主办

【九届EI检索稳定|江苏科技大学主办 | IEEE出版 】 🎈【截稿倒计时】!!! ✨徐秘书:gsra_huang ✨往届均已检索,已上线IEEE官网 🎊第九届清洁能源与发电技术国际学术会议(CEPGT 2…

React Native 全栈开发实战班 - 性能与调试之内存管理

在移动应用中,内存管理 是确保应用稳定运行、避免内存泄漏和卡顿的关键环节。React Native 应用在内存管理方面面临着一些独特的挑战,例如 JavaScript 与原生模块的桥接、复杂的 UI 渲染等。本章节将详细介绍 React Native 中的内存管理,包括…

GIT将源码推送新分支

1. 创建并切换到新分支 首先,确保你在本地创建了一个新的分支并切换到该分支: git checkout -b new-branch-namenew-branch-name 是你要创建的新分支名称,替换为你需要的名称即可。 2. 确保所有更改已提交 在推送之前,确保你的…