tencent cloud

腾讯云可观测平台

动态与公告
产品动态
产品简介
产品概述
产品优势
基本功能
基本概念
应用场景
使用限制
购买指南
云产品监控
应用性能监控
终端性能监控
前端性能监控
云拨测
Prometheus 监控服务
Grafana 服务
事件总线
云压测
快速入门
监控概览
实例分组
云产品监控
应用性能监控
云拨测
云压测
Prometheus 监控服务
Grafana 服务
创建 Dashboard
事件总线
告警服务
云产品监控
云产品监控指标
控制台操作指南
云服务器监控组件
云产品监控对接 Grafana
故障处理
实践教程
应用性能监控
应用性能监控简介
接入指南
控制台操作指南
实践教程
参考信息
常见问题
终端性能监控
终端性能监控概述
控制台操作指南
接入指南
实践教程
前端性能监控
前端性能监控简介
控制台操作指南
接入指南
常见问题
云拨测
产品简介
控制台操作指南
常见问题
云压测
云压测概述
控制台操作指南
实践教程
JavaScript API 列表
常见问题
Prometheus 监控
Prometheus 监控简介
接入指南
控制台操作指南
实践教程
Terraform
常见问题
Grafana 服务
产品简介
控制台操作指南
Grafana 平台常用功能指引
常见问题
Dashboard
什么是 Dashboard
控制台操作指南
告警管理
控制台操作指南
故障处理
常见问题
事件总线
事件总线简介
控制台操作指南
实践教程
常见问题
报表管理
常见问题
腾讯云可观测平台常见问题
告警服务相关
一般性问题
监控图表相关
云服务器监控组件相关
动态阈值告警相关
云监控对接 Grafana 相关
文档阅读指南
相关协议
应用性能监控服务等级协议
APM 隐私协议
APM 数据处理和安全协议
前端性能监控服务等级协议
终端性能监控服务等级协议
云拨测服务等级协议
Prometheus 监控服务服务等级协议
Grafana 服务服务等级协议
云压测服务等级协议
云压测使用限制
Cloud Monitor Service Level Agreement
词汇表

响应数据提取

PDF
聚焦模式
字号
最后更新时间: 2025-03-10 22:20:39

概述

若要从请求的响应中动态提取数据,PTS 除了支持字符串的简单匹配(相等或包含),还支持 Jsonpath 提取器、正则表达式提取器,供您实现更加灵活的提取逻辑。

基本用法

您在 PTS 压测场景中编排或调试请求时,若需从响应中动态提取数据值,用于为当前请求设置检查点、或为后续请求注入参数、或在调试模式下调试具体响应字段,则您可使用数据提取器,解析和提取响应数据中的具体字段。
响应数据提取需在编排场景或者调试场景时使用。如何编排或调试场景,详情请参见 简单模式压测脚本模式压测调试场景

使用场景

简单模式的场景下,您可从列表中选择具体的提取方式,然后在文本框输入符合提取器语法的表达式。以 Jsonpath 提取器为例:

脚本模式的场景下,您可使用 Get JSON field values,在脚本中实现提取数据的逻辑。以 Jsonpath 提取器为例:


提取器类型

Jsonpath 提取器

Jsonpath 提取器适用于从 JSON 类型的响应体中提取数据。Jsonpath 表达式的常用语法:
运算符
描述
@
当前节点
*
通配符,可匹配任意节点名或索引值
.<name>
用 . 匹配下级节点
[<number> (, <number>)]
用 [] 检索数组中的一个或多个元素
[start:end]
数组切片
[?(<expression>)]
用布尔表达式筛选数据
 在脚本模式下,Jsonpath 的用法及其结果示例如下:
import jsonpath from 'pts/jsonpath';
export default function () {
const json = JSON.stringify({
"name": {"first": "Tom", "last": "Anderson"},
"age": 37,
"children": ["Sara", "Alex", "Jack"],
"fav.movie": "Deer Hunter",
"friends": [
{"first": "Dale", "last": "Murphy", "age": 44, "nets": ["ig", "fb", "tw"]},
{"first": "Roger", "last": "Craig", "age": 68, "nets": ["fb", "tw"]},
{"first": "Jane", "last": "Murphy", "age": 47, "nets": ["ig", "tw"]}
]
});
console.log(jsonpath.get(json, 'name.last')); // Anderson
console.log(jsonpath.get(json, 'age')); // 37
console.log(jsonpath.get(json, 'children')); // Sara,Alex,Jack
console.log(jsonpath.get(json, 'children[*]')); // Sara,Alex,Jack
console.log(jsonpath.get(json, 'children.[0]')); // Sara
console.log(jsonpath.get(json, 'children[1:2]')); // Alex,Jack
console.log(jsonpath.get(json, 'children[1, 2]')); // Alex,Jack
console.log(jsonpath.get(json, 'friends[:].first')); // Dale,Roger,Jane
console.log(jsonpath.get(json, 'friends[1].last')); // Craig
console.log(jsonpath.get(json, 'friends[?(@.age > 45)].last')); // Craig,Murphy
console.log(jsonpath.get(json, 'friends[?(@.first =~ /D.*e/)].last')); // Murphy
};

正则表达式提取器

正则表达式提取器适用于从文本类型的响应中提取数据。PTS 正则表达式符合 JavaScript 原生语法,详情请参见 正则表达式
以 PTS 场景调试为例,正则表达式提取器用法如下:

以脚本模式场景设置检查点为例,正则表达式提取器用法如下:

import { sleep, check } from "pts";
import http from "pts/http";

export default function main() {
let response;

response = http.get("http://mockhttpbin.pts.svc.cluster.local/get?name=hello");
check("body matches /h[a-z]*o/", () => {
const expr = new RegExp("h[a-z]*o");
return expr.test(response.body);
});
}




帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈