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

使用RestAssured发起GET请求传递JSON查询参数,返回全量数据如何解决

问题原因及修复方案

核心问题点

  • 参数名不匹配:代码中声明的查询参数名为query,但实际生成的请求URL中参数名为params,接口无法识别到你传递的筛选条件,默认返回全量数据。
  • 序列化方式错误:直接将HashMap对象传入param()方法时,RestAssured会默认调用HashMap的toString()方法做序列化,输出的内容不是标准JSON格式,接口无法正常解析参数内容。
  • 缺少URL编码:JSON字符串包含{}、"等特殊字符,未做URL编码直接作为查询参数传递会导致解析失败。

修复步骤

  1. 先确认接口文档规定的筛选参数名,保证代码中参数名和接口要求完全一致。
  2. 引入JSON序列化工具(比如Jackson、Gson)将HashMap转为标准JSON字符串,再做URL编码后传入参数。

修正后代码示例

import com.fasterxml.jackson.databind.ObjectMapper;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;

// Request object using RestAssured
RequestSpecification httpRequest = RestAssured.given();
ObjectMapper objectMapper = new ObjectMapper();

HashMap<String, String> queryParams = new HashMap<>();
queryParams.put("kit_config_id", "60db53ec7a334172b005b692");

// 转JSON后做URL编码
String jsonStr = objectMapper.writeValueAsString(queryParams);
String encodedJson = URLEncoder.encode(jsonStr, StandardCharsets.UTF_8);

// 替换为接口实际要求的参数名,比如接口要求参数名为params就写params
Response response = httpRequest.given()
        .baseUri("https://qa-api-test.com")
        .param("params", encodedJson) // 这里参数名和接口要求保持一致
        .when()
        .get("/imageProps");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 14:36:04