首页 > 解决方案 > 如何在 Rest Assured 中使用其 id 删除特定参数?

问题描述

下面是json响应

{
  "details": [
    {
      "UserName": "john",
      "id": "abc_123",
      "LastName": "smith"
    }
  ]
}

我只需要删除UserName参数:

request.delete("http://localhost:8080/details/id/UserName");

上面的代码似乎不起作用,我的预期如下

{
  "details": [
    {
      "id": "abc_123",
      "LastName": "smith"
    }
  ]
}

标签: jsonrest-assured

解决方案


在 SO 上发布问题之前,请检查最小、完整和可验证的示例,有人可以提供帮助,但我们需要事先知道您已经尝试过什么。

要回答您的问题,您应该使用PUT而不是DELETE因为您正在尝试更新有效负载。DELETE 顾名思义将删除完整的资源

检查此 链接以获取更多详细信息

PUT 调用是特定于资源的,因此您必须提及应该影响哪个实体。

我已经根据您提供的详细信息提出了一个示例代码

在这里使用了HashMap但您也可以这样发布正文或使用POJOJSONObject

{

    Map < String, Object > map = new HashMap < > ();
    map.put("details", Arrays.asList(new HashMap < String, Object > () {
        {
            put("id", "abc_123");
            put("LastName", "smith");
        }
    }));

    RequestSpecification req = RestAssured.given();
    req.header("Content-Type", "application/json");
    req.body(map).when();
    Response resp = req.put("http://localhost:8080/details/id/abc_123");

    String body = resp.asString();
    System.out.println("Response is : " + body);
}

推荐阅读