java - RestAssured - 将列表作为 QueryParam 传递

标签 java rest jersey rest-assured

我有一个 REST 服务,它接收许多查询参数,其中包括一个字符串列表。我使用 RestAssured 来测试这个 REST 服务,但是我在将列表传递给服务时遇到了一些问题。

我的 REST 服务:

@GET
@Consumes(Mediatyper.JSON_UTF8)
@Produces(Mediatyper.JSON_UTF8)
public AggregerteDataDTO doSearch(@QueryParam("param1") final String param1,
                                  @QueryParam("param2") final String param2,
                                  @QueryParam("list") final List<String> list) {

我的 RestAssured 测试:

public void someTest() {
    final  String url = BASE_URL + "/search?param1=2014&param2=something&list=item1&list=item2";

    final String json = given()
            .expect()
            .statusCode(200)
            .when()
            .get(url)
            .asString();

当我打印 url 时,它看起来像这样:

http://localhost:9191/application/rest/search?param1=2014&param2=something&list=item1&list=item2

当我在浏览器中尝试这个 url 时,REST 服务正确地获取了一个包含 2 个元素的列表。但是,当运行我的 RestAssured 测试时,只有后者的参数被注意到,给我一个包含 1 个元素的列表(包含“item2”)。

最佳答案

您应该将 REST Assured 升级到最新版本,因为我认为这是旧版本中的错误。您还可以像这样指定参数:

final String json = 
given().
        param("param1", 2014).
        param("param2", "something").
        param("list", "item1", "item2").
when().
        get("/search").
then().
       statusCode(200).
extract().
          body().asString();  

关于java - RestAssured - 将列表作为 QueryParam 传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31293367/

相关文章:

spring - 带有内部消息队列的前端 REST API?

python - 活塞自定义响应表示

java - Swagger UI 导致 HTTP 406 对生成 json 以外的内容类型的操作 Not Acceptable 响应

java - REST API - Swagger + Java + Jersey 错误的列表路径和额外的 api

javax.ws.rs 按目标进行 REST 测试 - 在哪里获取或设置服务器地址?

java - Ascii 表空间

java - 我如何在Java中验证日期(仅当前日期或之后)

java - 如何限制方法调用以允许线程完成

php - RESTful API 基于用户角色的不同响应

java - Spring security oAuth 2.0(无效 token 不包含资源id(oauth2-resource))