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

使用rest-assured发送携带请求体的GET请求是否可行?

Rest-Assured GET请求携带请求体实现说明

支持性说明

Rest-Assured 原生支持 GET 请求携带请求体操作。需要注意的是,尽管 HTTP 规范没有明确禁止 GET 请求携带请求体,但部分服务端、网关、反向代理实现会默认忽略 GET 请求的 body 内容,使用前请先确认目标服务的兼容情况。

具体实现方式

GET 请求携带请求体的写法和 POST 等带 body 的请求写法几乎一致,只需要在given()构造请求阶段调用body()方法传入请求体内容,请求方法指定为get()即可:

代码示例

import static io.restassured.RestAssured.given;

public class GetWithBodyDemo {
    public void sendGetWithBody() {
        // 1. 构造请求体,支持JSON字符串、Map、POJO等多种入参形式
        // 示例使用JSON字符串
        String reqBody = """
            {
                "keyword": "test",
                "pageSize": 10,
                "pageNum": 1
            }
        """;

        // 2. 发送带请求体的GET请求
        given()
            .contentType("application/json") // 指定请求体格式
            .body(reqBody) // 传入构造好的请求体
        .when()
            .get("https://your-target-api.com/path") // 指定为GET请求
        .then()
            .statusCode(200) // 断言响应状态码
            .log().body(); // 打印响应结果
    }
}

其他入参形式说明

如果需要传入Map或者POJO作为请求体,只需要提前引入对应序列化依赖(比如Jackson/Gson),直接传入对象即可,Rest-Assured会自动完成序列化:

// Map形式传参示例
Map<String, Object> reqMap = new HashMap<>();
reqMap.put("keyword", "test");
reqMap.put("pageSize", 10);
reqMap.put("pageNum", 1);

given()
    .contentType("application/json")
    .body(reqMap)
.when()
    .get("/api/path")
.then()
    .statusCode(200);

注意事项

  • 建议使用 Rest-Assured 4.0及以上版本,低版本部分场景下可能存在GET请求body丢失的兼容问题
  • 若请求发送后服务端无法拿到请求体参数,优先排查链路中是否有中间件丢弃了GET请求的body内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:18:01