我有Restful API,当找不到某个项目时会响应404错误,但是根据未找到该项目的原因(未知,不可用等),会有不同的消息,可以使用Spring MVC通过以下方式完成:
response.sendError(HttpServletResponse.SC_NOT_FOUND, "NOT_AVAILABLE");
(这在任何浏览器上都可以正常工作,显示404错误并带有“NOT_AVAILABLE”作为消息)
现在,我想使用Spring RestTemplate将消息返回到我的Java代码中以进行管理。
我尝试了这个:
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服务器(发送404 HTML页面)上运行,但是它不随Weblogic服务器追加
最佳答案
OK,再多挖一点,解决方法其实很简单!
Tomcat正在向我发送其默认的404页面,我只需要告诉它使用我的!
这该怎么做:
<%@ page pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:out value="${requestScope['javax.servlet.error.message']}"/>
<error-page>
<error-code>404</error-code>
<location>/error/404.jsp</location>
</error-page>
现在,您可以使用
e.getStatusText()
在客户端中获取消息
关于rest - RestTemplate-处理自定义错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11796358/