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

如何在Rest Assured中获取请求查询参数的值

获取Rest Assured请求中查询参数的取值

有两种实用方法可以获取你请求里exercise=C1和answers=true的参数取值:

方式一:从已发送请求的URI中解析

你可以通过响应对象拿到请求的完整地址,再解析出查询参数:

借助Spring工具类(推荐)

如果项目里已经引入Spring相关依赖,用UriComponents可以快速解析:

import org.springframework.web.util.UriComponents;
import org.springframework.web.util.UriComponentsBuilder;

// 获取请求的完整URI
String requestUri = response1.getRequestURI();
UriComponents uriComponents = UriComponentsBuilder.fromUriString(requestUri).build();

// 提取参数值
String exerciseValue = uriComponents.getQueryParams().getFirst("exercise"); // 结果:C1
String answersValue = uriComponents.getQueryParams().getFirst("answers"); // 结果:true

手动拆分URL(无依赖)

不想引入额外工具的话,可以手动拆分字符串:

// 获取带参数的完整请求地址
String fullUrl = response1.getRequestURL().toString();
// 拆分出问号后的参数部分
String queryStr = fullUrl.split("\\?")[1];
// 按&拆分单个参数
String[] paramPairs = queryStr.split("&");

for (String pair : paramPairs) {
    String[] keyValue = pair.split("=");
    if ("exercise".equals(keyValue[0])) {
        String exerciseVal = keyValue[1]; // 得到C1
    }
    if ("answers".equals(keyValue[0])) {
        String answersVal = keyValue[1]; // 得到true
    }
}

方式二:重构请求代码,提前存储参数值

更规范的做法是把参数单独定义成变量,发起请求时传入,后续直接使用变量即可:

RestAssured.baseURI = "http://localhost:8090/api";
// 提前定义参数变量
String exerciseParam = "C1";
boolean answersParam = true;

Response response1 = given().log().all()
        .queryParam("exercise", exerciseParam)
        .queryParam("answers", answersParam)
        .when()
        .get("questions")
        .then().log().all().extract().response();

// 直接用变量获取取值
System.out.println(exerciseParam); // 输出C1
System.out.println(answersParam); // 输出true

这种方式既方便获取参数值,也让代码更易维护,修改参数时只需调整变量即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 06:06:16