У меня есть Restful API, который отвечает на ошибку 404, когда элемент не найден, но имеет разные сообщения в зависимости от причины, по которой элемент не найден (неизвестно, недоступен,...), это делается с помощью Spring MVC:
response.sendError(HttpServletResponse.SC_NOT_FOUND, "NOT_AVAILABLE");
(это прекрасно работает с любым браузером, отображая 404 ошибки с сообщением «NOT_AVAILABLE»)
Теперь я хотел бы вернуть это сообщение в свой код Java, используя Spring RestTemplate, чтобы управлять ими. Я пробовал это:
try {
rest.put(apiRootUrl + "/item/{itemId}", null, itemId);
} catch (HttpClientErrorException e) {
if (NOT_FOUND == e.getStatusCode()) {
switch (MyErrorCode.valueOf(e.getStatusText())) {
case NOT_AVAILABLE:
return displayNotAvailableError();
case UNKNOWN:
return displayUnknownError();
default:
// ...
}
}
}
но в getStatusText()
я всегда получал метку NOT FOUND (из 404), а не свое пользовательское значение.
Кто-нибудь знает, можно ли получить пользовательское сообщение из ошибок 404? И поэтому как?
большое спасибо!
Изменить: я работаю на сервере Tomcat (который отправляет HTML-страницу 404), и это не добавляется к серверу Weblogic.