如何在 RestAssured 中处理多个路径参数?

How to handle multiple path parameters in RestAssured?

我们有一个 restAssured GET 调用:

 public Response getRequest( final int survey_ID){
    httpRequest.header("Content-Type", ContentType.JSON);
    httpRequest.header("Authorization", System.getProperty("apiKey"));
    httpRequest.pathParams("survey_id", survey_ID);
    return httpRequest.get("/{survey_id}");
}

现在有一个新的端点可以接受多个路径参数,例如:

 goals/check-enabled?survey_ids=54321,12345

[此处Survey_ids可以是1个或多个]

那么,我该如何在我的代码中处理这个问题? 我正在考虑实现如下所示的东西,但我想可能有更好的方法。

  public Response getRequest( final int[] survey_IDs){
    httpRequest.header("Content-Type", ContentType.JSON);
    httpRequest.header("Authorization", 
    System.getProperty("apiKey"));
//        another Option
//        for(int survey_ID : survey_IDs){
//            httpRequest.pathParams("survey_id", survey_ID);
//        }
        return httpRequest.get("/{survey_ids}", survey_IDs);
    }

请推荐

非常感谢

你在问题中给出的URL例子,即goals/check-enabled?survey_ids=54321,12345显示survey_ids是一个query参数,不是 path 参数如你所描述。路径参数将是这样的:/items/{item_id},您需要在其中传递项目 ID,例如 /items/2。也许您可以尝试类似下面的方法,如 here 所述,用于为查询参数传递多个值(这似乎是您正在寻找的)。

String survey_IDs= "54321,12345";
RestAssured.given().urlEncodingEnabled(false).
    contentType(ContentType.JSON).with().
    queryParam("survey_ids", survey_IDs).
    when().get("").then().statusCode(200).log().all();

现在你只有一个查询参数(因为 ?param=value 语法),即使它看起来像一个带有列表的路径参数。

您可以在这些选项中进行选择:

  1. 指定将与请求一起发送的 multi-value 查询参数,例如:
...given().queryParam("survey_ids", asList("54321", "12345"))...;

这将设置参数 survey_ids=54321 和 survey_ids=12345

方法需要这样调整:

public Response getRequest(List<Integer> survey_IDs) {
  1. 保持使用一个查询参数,但将其拆分。
String[] ids = survey_IDs.split(",");
...given().queryParam("survey_ids", "54321,12345")...;