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

RestAssured POST请求后无法获取提交的完整JSON响应如何解决?

问题原因及解决方案

你的问题出在请求体的JSON格式错误:你把两个独立的JSON对象字符串直接拼接,生成的是{"name": "morpheus"}{"job": "leader"},这是不符合JSON规范的无效格式,服务器无法正确解析出name和job参数,因此响应里不会返回这些提交的字段。

修正方式有以下几种:

1. 构造正确的单个JSON字符串

直接将所有键值对放在同一个JSON对象中:

@Test
public void postTest() {                        
    Response response = RestAssured.given()
                                    .body("{\"name\": \"morpheus\", \"job\": \"leader\"}")
                                    .when()
                                    .post(base_URI);
    assertEquals(response.statusCode(), 201);
    System.out.println(response.asPrettyString());
}

2. 使用Map自动序列化(更简洁)

用Map存储请求参数,RestAssured会自动将其序列化为合法的JSON:

@Test
public void postTest() {                        
    Map<String, String> requestBody = new HashMap<>();
    requestBody.put("name", "morpheus");
    requestBody.put("job", "leader");

    Response response = RestAssured.given()
                                    .body(requestBody)
                                    .when()
                                    .post(base_URI);
    assertEquals(response.statusCode(), 201);
    System.out.println(response.asPrettyString());
}

3. 使用POJO类(规范的企业级写法)

定义一个对应请求体的实体类,通过对象传递参数,避免手动拼接JSON的错误:

// 定义实体类
class UserRequest {
    private String name;
    private String job;

    // 构造方法
    public UserRequest(String name, String job) {
        this.name = name;
        this.job = job;
    }

    // 必须提供getter方法,否则序列化会失败
    public String getName() {
        return name;
    }

    public String getJob() {
        return job;
    }
}

// 测试方法
@Test
public void postTest() {                        
    UserRequest requestBody = new UserRequest("morpheus", "leader");

    Response response = RestAssured.given()
                                    .body(requestBody)
                                    .when()
                                    .post(base_URI);
    assertEquals(response.statusCode(), 201);
    System.out.println(response.asPrettyString());
}

修正后,服务器能正确解析请求体,响应就会返回包含name、job、id和createdAt的完整JSON。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 17:24:17