如何在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
相关产品推荐
相关产品推荐

