You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Cypress中用通配符精准拦截特定URL

解决方法

你可以通过正则表达式或者自定义匹配函数精准拦截目标URL,避开带duedate的请求,下面是具体实现:

方法1:正则表达式匹配

用正则匹配/api/v1/payment/后跟随哈希值(十六进制字符串)的路径,同时兼容任意查询参数:

cy.intercept(/^\/api\/v1\/payment\/[a-f0-9]+(\?.*)?$/).as('paymentHashRequest')

正则说明:

  • ^\/api\/v1\/payment\/:锁定路径开头的固定前缀
  • [a-f0-9]+:匹配示例中的哈希格式(小写字母a-f+数字),如果哈希可能含大写字母,改成[a-fA-F0-9]+即可
  • (\?.*)?:可选匹配查询参数部分(比如?cache_buster=...)

方法2:自定义匹配函数

通过routeMatcher的自定义逻辑,直接排除带duedate的路径:

cy.intercept({
  pathname: (path) => {
    // 确保是目标API前缀,且路径不含/duedate
    return path.startsWith('/api/v1/payment/') && !path.includes('/api/v1/payment/duedate')
  },
  query: {
    cache_buster: '*' // 限定必须包含cache_buster参数
  }
}).as('paymentHashRequest')

逻辑说明:

  • 先锁定API前缀,再通过排除规则过滤掉不需要的请求
  • 加上query校验,进一步缩小匹配范围,避免误拦截其他同前缀请求

为什么你之前的写法无效?

你用的/api/v1/payment/*?cache_buster里的*是通配符,会匹配任意字符(包括duedate),所以两个URL都会被拦截,无法区分。

内容的提问来源于stack exchange,提问作者user20487878

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 05:15:43