【发布时间】:2015-10-14 13:43:56
【问题描述】:
我想写一个@ExceptionHandler,这样JSON 请求也会在JSON 中得到错误响应。对于非 JSON 请求,我希望 servlet 容器发送其默认的 HTML 响应。
为此,我需要进行一些内容协商。 Spring MVC 通过注解处理普通请求,但是@ExceptionHandlers 没有这样的注解。
我想知道如何以编程方式调用内容协商代码?
【问题讨论】:
-
听起来很棘手,但您可以在 springSecurityFilterChain 之后创建自定义过滤器添加它。然后根据请求内容你可以修改响应内容。
-
在第一段中,您描述了您想要一个固定的返回类型(实际上是两个)。但问题是“获取内容协商结果”,它可能不是 JSON 或 HTML。您只需要检查
Content-Type标头是否为application/json(或变体)。然后它是一个 JSON 请求,你返回一个 JSON 响应。
标签: java spring spring-mvc