如何在 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
语法),即使它看起来像一个带有列表的路径参数。
您可以在这些选项中进行选择:
- 指定将与请求一起发送的 multi-value 查询参数,例如:
...given().queryParam("survey_ids", asList("54321", "12345"))...;
这将设置参数 survey_ids=54321 和 survey_ids=12345
方法需要这样调整:
public Response getRequest(List<Integer> survey_IDs) {
- 保持使用一个查询参数,但将其拆分。
String[] ids = survey_IDs.split(",");
...given().queryParam("survey_ids", "54321,12345")...;
我们有一个 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
语法),即使它看起来像一个带有列表的路径参数。
您可以在这些选项中进行选择:
- 指定将与请求一起发送的 multi-value 查询参数,例如:
...given().queryParam("survey_ids", asList("54321", "12345"))...;
这将设置参数 survey_ids=54321 和 survey_ids=12345
方法需要这样调整:
public Response getRequest(List<Integer> survey_IDs) {
- 保持使用一个查询参数,但将其拆分。
String[] ids = survey_IDs.split(",");
...given().queryParam("survey_ids", "54321,12345")...;