我想要以下流程:
请求 - > 1)验证JSON正文 - > 2)验证安全问题的JSON - > ...等
并抛出异常/在1)或2)中给出适当的JSON响应。
我曾尝试使用拦截器和过滤器。
过滤器:我可以通过使用Request Wrapper修改主体,然后将其沿链传递给JSON Validation,但是当我抛出异常时,它们不会被@ControllerAdvice异常处理程序拦截,它适用于其他所有内容。据我所知,这是设计......?此外,我尝试手动设置响应,例如下面,但似乎spring boot将状态代码更改为405.
response.getWriter().write("{\"test\" : \"test\"");
response.sendError(400);
拦截器:我得到一个错误,因为我不止一次读取身体,我无法看到如何设置我在拦截器运行之前 之前设置的自定义HttpServletRequestWrapper。
我正在采用一种实现此方案的方法。
非常感谢任何帮助。谢谢!
答案 0 :(得分:0)
我意识到因为首先运行过滤器,我可以使用Request Wrapper修改请求。然后我使用拦截器来运行安全性和json检查。
我仍然想知道如何在Filter中修改响应,但我不喜欢spring boot会如何改变它,即使你已经有了响应代码。