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

使用Karate Mock时,如何在调用karate.proceed前修改请求路径?

解决Karate Mock中karate.proceed无法覆盖原请求路径的问题

当你调用karate.proceed(newurl)时,Karate默认会复用原请求的路径、参数等信息,所以才会出现新URL拼接原路径的情况。要完全忽略原路径,只使用新URL发起请求,有两种简单的解决方式:

方式一:清空原请求的路径

修改你的Mock.feature,在调用karate.proceed前手动将requestUri设为空字符串,这样Karate就不会拼接原路径了:

Scenario: pathMatches('/{version}/{say}/{name}')
    * def requestHeaders = { 'Authorization': 'Bearer 123'}
    * def requestParams = {}
    * def newurl = 'https://jsonplaceholder.typicode.com'
    # 清空原请求的路径,避免被拼接
    * requestUri = ''
    * karate.proceed(newurl)

方式二:传入完整请求对象

如果你需要更精细地控制转发的请求(比如自定义方法、参数等),可以直接构造一个完整的请求对象传给karate.proceed,完全覆盖原请求的所有属性:

Scenario: pathMatches('/{version}/{say}/{name}')
    * def newRequest = {
        url: 'https://jsonplaceholder.typicode.com',
        method: requestMethod, # 复用原请求方法,也可以直接写'GET'
        headers: { 'Authorization': 'Bearer 123'},
        params: {} # 清空参数,也可以按需添加新参数
    }
    * karate.proceed(newRequest)

如果你的新URL本身包含路径(比如https://jsonplaceholder.typicode.com/posts),直接写在url字段里即可,不需要额外处理,两种方式都能正常生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 13:17:13