2.0 KiB
2.0 KiB
Why
当前 expect 规则仅有 status、bodyContains、maxLatencyMs 三条,无法满足 API 网关拨测中对 JSON 返回值字段校验、HTML 页面内容校验、响应头校验等常见需求。body 校验能力单薄(仅子串匹配),需要增强为多种可组合的校验方法,覆盖主流响应格式。
What Changes
- 新增
headers规则,支持按响应头键值对校验 - 重构 body 校验:将独立的
bodyContains移至body分组下,新增五种 body 校验方法:contains:子串匹配(从原bodyContains迁移)regex:正则表达式全文匹配json:JSONPath 提取值后比较css:CSS 选择器提取 HTML 元素文本/属性后比较xpath:XPath 提取 XML/HTML 节点后比较
- body 五种方法可任意组合,AND 串联
- 新增操作符系统:
equals(默认)、contains、match(正则)、empty、exists、gte、lte、gt、lt - 新增依赖:
cheerio(CSS 选择器)、xpath+@xmldom/xmldom(XPath 引擎) - BREAKING:
expect.bodyContains迁移至expect.body.contains
Capabilities
New Capabilities
expect-body-checkers:body 响应校验方法集(contains/regex/json/css/xpath)及操作符系统
Modified Capabilities
probe-config:expect 配置 schema 变更,新增 headers/body 分组,bodyContains 迁移probe-engine:checkExpect 函数扩展,支持新的 body 校验方法和操作符
Impact
- 类型定义:
src/server/checker/types.ts(ExpectConfig/BodyExpectConfig/ExpectOperator) - 配置加载:
src/server/checker/config-loader.ts(解析新的 expect 结构) - 拨测执行:
src/server/checker/fetcher.ts(checkExpect 扩展) - 数据存储:
src/server/checker/store.ts(expect JSON 序列化兼容) - 前端展示:状态判定逻辑不变(matched 字段语义不变)
- 配置文件:
probes.example.yaml(更新示例) - README.md:更新配置文档
- 依赖:
package.json新增 cheerio、xpath、@xmldom/xmldom