【发布时间】:2015-07-02 14:05:30
【问题描述】:
我正在使用 Jersey 2.19 来实现 REST API,但我很难让资源验证按预期工作。
我的资源是这样的。
@POST
@Produces(MediaType.TEXT_PLAIN)
@Consumes("application/x-www-form-urlencoded")
public Response test(@NotNull @FormParam("test-param") String testParam, String body)
{
String response = "test-param is: " + testParam + "\n" + "body is: " + body + "\n";
return Response.status(Response.Status.OK).entity(response).build();
}
当我发出以下 cURL 请求时:
curl -X POST http://192.168.50.112:8080/myapp/test-validation --data invalid-param=invalid
我在终端窗口中得到以下响应:
test-param is: null
body is: invalid-param=invalid
即test-param 的值是 null,正如预期的那样,但不会引发 Java EE tutorial 中定义的异常。
如果 javax.validation.ValidationException 或任何子类 ValidationException 除了 ConstraintValidationException 被抛出, JAX-RS 运行时将使用 500 响应客户端请求 (内部服务器错误)HTTP 状态代码。
如果抛出 ConstraintValidationException,JAX-RS 运行时将 使用以下 HTTP 状态代码之一响应客户端:
500(内部服务器错误)如果异常被抛出,而 验证方法返回类型
在所有其他情况下为 400(错误请求)
【问题讨论】:
-
你能不能也从控制台提供 Curl 输出
-
--verbose将在response和curl中为您提供更详细的数据,例如响应代码等 -
@AnkitNigam 请求本应被拒绝。
标签: java rest jersey jax-rs bean-validation