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

REST Assured无法识别花括号,端点URL查询使用遇阻求协助

问题分析

这个报错的原因很明确:RestAssured把你查询参数里的{cycle-id[12345];test.name[Validate_REST_Assured_Curly_Brackets]}当成了没填充的路径参数!它会自动扫描URL里所有的{},默认这些都是要替换的路径占位符,结果你的查询语法刚好带大括号,就触发了这个解析逻辑,导致它觉得你漏填了路径参数,直接抛异常了。

解决方案

最靠谱的做法是把路径参数和查询参数分开处理,别把查询参数直接嵌在带路径占位符的URL里,具体改法看下面:

方法一:拆分路径与查询参数(推荐)

先把带路径占位符的基础URL单独拎出来,用pathParam()填好路径参数,再用queryParam()单独设置查询参数——这样RestAssured就不会把查询里的大括号当成路径占位符了。

修改后的代码示例:

// 先写只包含路径参数占位符的基础接口地址
String baseEndpoint = "https://{almurl}/qcbin/rest/domains/{domain}/projects/{project}/test-instances";

// 把查询参数单独拿出来,这里的大括号是查询语法的一部分,不用转义
String queryContent = "cycle-id[12345];test.name[Validate_REST_Assured_Curly_Brackets]";

Response response = RestAssured.given()
        .relaxedHTTPSValidation()
        .contentType("application/xml")
        .cookie(cookie)
        // 逐个填充路径参数
        .pathParam("almurl", "你的ALM实际域名/地址")
        .pathParam("domain", "你的目标domain")
        .pathParam("project", "你的目标project")
        // 设置查询参数
        .queryParam("query", queryContent)
        .get(baseEndpoint)
        .then()
        .extract()
        .response();

方法二:转义查询参数里的大括号

如果你不想拆分,也可以把查询参数里的{}改成{{}}——RestAssured认双大括号是字面量的大括号,不会把它当成路径占位符。不过这种方式可读性差一点,不如第一种方法清爽,示例如下:

// 把查询参数里的单大括号改成双大括号
String almQuery = "https://{almurl}/qcbin/rest/domains/{domain}/projects/{project}/test-instances?query={{cycle-id[12345];test.name[Validate_REST_Assured_Curly_Brackets]}}";

Response response = RestAssured.given()
        .relaxedHTTPSValidation()
        .contentType("application/xml")
        .cookie(cookie)
        // 填充路径参数
        .pathParam("almurl", "你的ALM实际域名/地址")
        .pathParam("domain", "你的目标domain")
        .pathParam("project", "你的目标project")
        .get(almQuery)
        .then()
        .extract()
        .response();
核心逻辑提醒

RestAssured对URL里的{}是全局扫描的,只要是单大括号就默认是路径参数占位符。要么用双大括号转义字面量大括号,要么把查询参数单独通过queryParam()设置,后者不仅能避免冲突,还能自动帮你处理参数编码,更规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:06:52