如何在Spring(Boot)中修饰REST响应?

我有一个Spring Boot应用程序,它返回被编码为JSON响应的各种对象,我想对它们进行后处理并向某些超类添加信息。

有没有办法过滤,拦截等来自我的REST端点的对象响应,然后才能用Jackson编码为JSON。

filter无法工作,因为它在HttpServlet{Request,Response}级别运行。

我猜ResponseBodyAdvice是你的朋友。 基本上它:

允许在执行@ResponseBodyResponseEntity控制器方法之后但在使用HttpMessageConverter编写正文之前自定义响应。 实现可以直接使用RequestMappingHandlerAdapterExceptionHandlerExceptionResolver注册,或者更可能使用@ControllerAdvice注释,在这种情况下,它们将被两者自动检测。

在这里我拦截所有返回的String并使它们大写:

 @ControllerAdvice public class MyResponseBodyAdvisor implements ResponseBodyAdvice { @Override public boolean supports(MethodParameter returnType, Class> converterType) { return returnType.getParameterType().equals(String.class); } @Override public String beforeBodyWrite(String body, MethodParameter returnType, MediaType selectedContentType, Class> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) { return body.toUpperCase(); } }