【发布时间】:2017-07-04 22:41:30
【问题描述】:
我正在使用JAX-RS ExceptionMapper 来捕获应用程序异常并返回自定义输出。问题是,在映射器的上下文中,如果用户没有提供 Accept 标头,我不知道要返回什么类型的输出(例如 HTML 与 JSON)。目前,该代码使用基于UriInfo 请求路径的可怕黑客攻击来确定选择哪种媒体类型。理想情况下,媒体类型应该与引发异常的方法上的 @Produces 注释相同,但我无法找到任何方法在 ExceptionMapper 中获取该注释。
这可能吗,还是有其他方法可以返回合理的媒体类型?
其他答案:
This answer 建议使用 httpHeaders.getMediaType(),它返回传入请求的媒体类型,如果没有请求正文,则返回 null,因此对 GET 请求没有帮助。
这是一个 implementation,基于下面 peeskillet 的回答。
【问题讨论】:
-
拒绝这个问题而不解释它有什么问题是非常无益的。我已经多次阅读该问题以寻找问题,但对我来说似乎很好。
标签: java rest exception-handling jax-rs media-type