gpt4 book ai didi

java - REST Web 服务/Web UI 服务的单独异常映射

转载 作者:行者123 更新时间:2023-12-04 06:19:15 25 4
gpt4 key购买 nike

我用 编写了一个 Web 服务 Jersey .
此 Web 服务提供可通过 REST 客户端访问的 REST 方法和用户 WebUI(基本上是简单的 HTML)。

这两个方面由 2 个独立的“ReSTLet”类提供服务。

我已经注册了一个独特的异常映射器,它会在发生意外异常时打印整个错误和堆栈跟踪。这些异常可以由 REST 服务或 WebUI 抛出。

我想在异常返回到 REST 客户端时返回一个纯文本堆栈跟踪,并在 WebUI 端发生时返回一个漂亮的 HTML 错误页面。

我想我可以通过探索请求的“接受”Http header ,寻找 HTML mime 类型来做到这一点。但是请求在中不可用异常映射器 界面。

你会怎么做?

最佳答案

这个想法如何:

编写一个 servlet 过滤器/监听器,将 HTTP 请求对象存储在 Thread Local 变量中,然后您可以从异常映射器中读取该变量。

注意:在 Spring 中,这可以使用 RequestContextFilter 来实现。或 RequestContextListener

这将被添加到 web.xml

<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>

并像这样使用:
ServletRequestAttributes reqAttr = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
HttpServletRequest req = reqAttr.getRequest();

如果您不使用 spring,那么源代码可能会给您一个关于如何滚动自己的想法。希望有帮助。

关于java - REST Web 服务/Web UI 服务的单独异常映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6814308/

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