JSON 请求中存在无效属性类型时,JAX-RS 2.0 不会抛出异常
JAX-RS 2.0 doesn't throw exception when there is invalid attribute type in JSON request
我有以下 REST 端点:
@Stateless
@Path("test")
public class TestResource {
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public TestDTO test(TestDTO dto) {
return dto;
}
}
TestDTO bean 非常简单:
public class TestDTO {
private String id;
private Integer number;
// + getter/setter
}
如果我 post 以下 JSON,响应将完全相同(正如在这个简单示例中预期的那样):
{
"id": "abc",
"number": 123
}
但是如果我为 "number" 发送一个字符串值:
{
"id": "abc",
"number": "NotANumber"
}
服务器不会初始化我的 TestDTO 的数字变量(值 = null),我的响应如下:
{
"id": "abc"
}
我不明白...为什么服务器不响应“400 - 错误请求”? :/
这段代码是 运行 Weblogic 应用程序服务器版本 12.2.1.1.0 中提供的 Jersey 实现(我的 pom.xml 中只有一个依赖项:javaee-api 版本 7.0 )
好的...不抛出任何异常是 MOXy 的默认选择,新的默认 JAX-RS Json 所有 Oracle 产品(Glassfish 和 WebLogic)的提供程序(而不是 Jackson)。
这对我来说似乎很奇怪......但是是的,我们必须处理它:/
我们必须为此目的注册一个 ValidationErrorHandler。
我在那里找到了一个完整的(有效的)解决方案:
Custom MOXyJsonProvider in Jersey 2 not working?
我有以下 REST 端点:
@Stateless
@Path("test")
public class TestResource {
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public TestDTO test(TestDTO dto) {
return dto;
}
}
TestDTO bean 非常简单:
public class TestDTO {
private String id;
private Integer number;
// + getter/setter
}
如果我 post 以下 JSON,响应将完全相同(正如在这个简单示例中预期的那样):
{
"id": "abc",
"number": 123
}
但是如果我为 "number" 发送一个字符串值:
{
"id": "abc",
"number": "NotANumber"
}
服务器不会初始化我的 TestDTO 的数字变量(值 = null),我的响应如下:
{
"id": "abc"
}
我不明白...为什么服务器不响应“400 - 错误请求”? :/
这段代码是 运行 Weblogic 应用程序服务器版本 12.2.1.1.0 中提供的 Jersey 实现(我的 pom.xml 中只有一个依赖项:javaee-api 版本 7.0 )
好的...不抛出任何异常是 MOXy 的默认选择,新的默认 JAX-RS Json 所有 Oracle 产品(Glassfish 和 WebLogic)的提供程序(而不是 Jackson)。 这对我来说似乎很奇怪......但是是的,我们必须处理它:/
我们必须为此目的注册一个 ValidationErrorHandler。
我在那里找到了一个完整的(有效的)解决方案: Custom MOXyJsonProvider in Jersey 2 not working?