Я изучаю JAX-RS (ака, JSR-311), используя Джерси. Я успешно создал корневой ресурс, и я играл с параметрами:JAX-RS/Jersey, как настроить обработку ошибок?
@Path("/hello")
public class HelloWorldResource {
@GET
@Produces("text/html")
public String get(
@QueryParam("name") String name,
@QueryParam("birthDate") Date birthDate) {
// Return a greeting with the name and age
}
}
Это прекрасно работает, и обрабатывает любой формат в текущей локали, который понимается по дате (String) Конструктор (например, YYYY/мм/дд и мм/дд/ГГГГ). Но если я поставлю значение, которое недействительно или не понято, я получаю ответ 404.
Например:
GET /hello?name=Mark&birthDate=X
404 Not Found
Как я могу настроить это поведение? Может быть, другой код ответа (возможно, «400 Bad Request»)? Как насчет регистрации ошибки? Возможно, добавьте описание проблемы («формат плохой даты») в пользовательский заголовок, чтобы помочь устранить неполадки? Или вернуть весь ответ об ошибке с подробной информацией вместе с кодом состояния 5xx?
В вашем примере, вызов супер() должно быть немного иначе:.. супер (Response.status (Status.UNAUTHORIZED) объект (сообщение) .type ("текст/обычный") построить()); Спасибо за понимание. –
Я думаю, что этот метод не будет выполнен в его примере. – deamon
В сценарии, упомянутом в вопросе, вы не получите шанс выбросить исключение, так как Джерси добавит исключение, так как он не сможет создать экземпляр объекта Date из входного значения. Есть ли способ перехватить исключение Джерси? Существует один интерфейс ExceptionMapper, однако он также перехватывает исключения, вызванные этим методом (get в этом случае). –