我不是任何 jersey 专家,但我读到 jersey 无法根据查询参数解析 java 方法,但有时看起来确实如此,这是我的示例。
这是服务器代码:
@GET
@Path("/services")
public String getAll(
@QueryParam("limit") Integer limit,
@QueryParam("offset") Integer offset){
return "1 2 3";
}
Run Code Online (Sandbox Code Playgroud)
这是客户端代码:
ClientResponse response = webResource
.path("services")
.queryParam("limit", "ab")
.get(ClientResponse.class);
logger.info(response.toString());
assertEquals(response.getStatus(), 200);
Run Code Online (Sandbox Code Playgroud)
看起来 jersey 不喜欢“ab”并且无法映射查询参数,因此它返回 404,但是如果 limit =“1”,我可以找到正确的方法。
在这种情况下,jersey 返回 404 是否正确?我知道我可以使用 String 而不是 Integer 来扩展接口,以覆盖对任何可行的 sintax 错误的所有处理。,我可以配置 jersey 代表我执行此操作吗?
我正在使用服务器:grizzly/1.9.18,jersey 1.11
谢谢!
目前这在泽西岛是不可能的。也许我们可以想出一个功能来使其更加友好。可以将 @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";
}
Run Code Online (Sandbox Code Playgroud)
我在这里提交了 RFE:http://java.net/jira/browse/JERSEY-1263
如果您有意见请评论。
归档时间: |
|
查看次数: |
4800 次 |
最近记录: |