gpt4 book ai didi

rest - RestTemplate-处理自定义错误消息

转载 作者:行者123 更新时间:2023-12-03 08:59:20 28 4
gpt4 key购买 nike

我有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页面,我只需要告诉它使用我的!

这该怎么做:

  • 创建一个404.jsp页面,如下所示:
    <%@ page pageEncoding="UTF-8" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <c:out value="${requestScope['javax.servlet.error.message']}"/>
  • 在您的web.xml中引用它
    <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/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com