5

我不是任何球衣大师,但我读到球衣无法根据查询参数解析 java 方法,但有时看起来确实如此,这是我的示例。

这是服务器代码:

@GET
@Path("/services")
public String getAll(
        @QueryParam("limit") Integer limit,
        @QueryParam("offset") Integer offset){
        return "1 2 3";
}

这是客户端代码:

ClientResponse response = webResource
        .path("services")
        .queryParam("limit", "ab")
        .get(ClientResponse.class);
logger.info(response.toString());
assertEquals(response.getStatus(), 200);

看起来球衣不喜欢“ab”并且无法映射查询参数,因此它返回 404,但是如果 limit =“1”,我可以找到正确的方法。

jersey 在这种情况下返回 404 是否正确?我知道我可以使用 String 而不是 Integer 来扩展接口以覆盖任何可行的 sintax 错误的所有处理。我可以配置 jersey 代表我执行此操作吗?

我正在使用服务器:grizzly/1.9.18,jersey 1.11

谢谢!

4

1 回答 1

3

目前这在泽西岛是不可能的。也许我们可以想出一个功能来使它更友好。可以将诸如 @ErrorParam 注释之类的东西附加到参数上。如果存在此类参数并且某些 QueryParam 转换失败,则查询参数将使用默认值填充,并且错误参数的真实字符串值将添加到使用 @ErrorParam 注释的参数中传递的名称-值映射中?

@GET
@Path("/services")
public String getAll(
        @QueryParam("limit") Integer limit,
        @QueryParam("offset") Integer offset,
        @ErrorParam MultivaluedMap<String, String> typeErrors) {

    if (!typeErrors.isEmpty()) {
        // do something
    }

    return "1 2 3";
}

我在这里提交了 RFE:http://java.net/jira/browse/JERSEY-1263

如果您有意见,请发表评论。

于 2012-06-29T09:36:38.300 回答