Я работаю над API JAX-RS, где пользователь отправляет полезную нагрузку ниже JSON в мой API:
{
"text": "test search",
"count": "myvalue"
}
Как упоминалось выше, count имеет тип Integer в POJO SearchDetailsInfo.java
, но пользователь отправляет некоторую строку мусора в нем при публикации данных в этот API.
Пожалуйста, найдите мой метод контроллера ниже:
@POST
@Path("/myview")
@Produces(MediaType.APPLICATION_JSON)
public OrderedJSONObject getCatalogView(SearchDetailsInfo criteria,
@Context ContainerRequestContext containerRequestContext) {
.... processing ....
}
Так как API несоответствия типов данных получает ошибку ответа, как показано ниже:
Status Code : 400
Status Message : Bad Request
Body:
Can not construct instance of java.lang.Integer from String value 'myvalue':
not a valid Integer value at [Source: org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream@bd8b3db; line: 5, column: 15]
Из-за несоответствия типов данных Джерси выдает неверный тип данных.
К сожалению, я не могу перехватить это исключение, потому что запрос не поступает в метод контроллера из-за исключительной ситуации при разборе типа данных.
Хотелось бы знать, как я могу поймать это исключение, чтобы я мог изменить ответ об ошибке на что-то значимое.
Спасибо.