在Interceptor中修改JSON主体

时间:2016-01-27 22:53:10

标签: java spring spring-boot

我想要以下流程:

请求 - > 1)验证JSON正文 - > 2)验证安全问题的JSON - > ...等

并抛出异常/在1)或2)中给出适当的JSON响应。

我曾尝试使用拦截器和过滤器。

过滤器:我可以通过使用Request Wrapper修改主体,然后将其沿链传递给JSON Validation,但是当我抛出异常时,它们不会被@ControllerAdvice异常处理程序拦截,它适用于其他所有内容。据我所知,这是设计......?此外,我尝试手动设置响应,例如下面,但似乎spring boot将状态代码更改为405.

response.getWriter().write("{\"test\" : \"test\"");
response.sendError(400);

拦截器:我得到一个错误,因为我不止一次读取身体,我无法看到如何设置我在拦截器运行之前 之前设置的自定义HttpServletRequestWrapper。

我正在采用一种实现此方案的方法。

非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

我意识到因为首先运行过滤器,我可以使用Request Wrapper修改请求。然后我使用拦截器来运行安全性和json检查。

我仍然想知道如何在Filter中修改响应,但我不喜欢spring boot会如何改变它,即使你已经有了响应代码。