SpringBoot using JSON Sanitizer?



我有一组使用 springboot restcontroller 编写的 rest API。每个 api 返回不同的对象类型,这些对象类型使用 jackson lib 转换为 json。有没有办法在将 json 返回给客户端之前对其进行编码/清理?不想复制每个 API 的代码。

您可以创建一个实现ResponseBodyAdvice@ControllerAdvice类,该类将在控制器的操作之后和响应写入调用方之前执行。对于方法beforeBodyWrite,您将获得当前正文响应作为输入,并且可以返回修改后的正文作为响应。

@ControllerAdvice
public class HeaderModifierAdvice implements ResponseBodyAdvice<Object> {
@Override
public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
return true;
}
@Override
public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {
return "new rewritten response";
}
}

有用的博客文章: https://mtyurt.net/post/spring-modify-response-headers-after-processing.html

最新更新