示例端点:
@POST
@Path("/user")
@Consumes("application/json")
private Response saveUser(User user) {
//do something return Response.class
}
根据我的理解,Jersey将JSON从post body转换为User对象。
假设客户端发送了格式不正确的JSON(无效的JSON,而不是用户对象等),我如何捕获Jersey引发的错误?
我所拥有的ExceptionMapper没有捕捉到它。但是,如果我将String json
设置为参数,然后使用User
将其映射到ObjectMapper
对象,则会抓住它。
如果可能的话,我会喜欢它,如果我不能使用ClientResponseFilters
和ContainerResponseFilters
,因为我希望我的所有异常/错误处理只在一个地方,这是一个ExceptionMapper。 / p>
另外,ExceptionMapper
似乎是处理Exceptions
的合适类。
这是我得到的错误:
Unexpected character ('a' (code 97)): was expecting double-quote to start field name at [Source: org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream@6d4a3a6f; line: 3, column: 28]
编辑:对于那些没有阅读我的帖子的主体而只是将其标记为重复的人:我确实注册了一个ExceptionMapper,但错误已经过去了。