我有一组使用 springboot Restcontroller 编写的 REST API。每个 api 返回不同的对象类型,这些对象类型使用 jackson lib 转换为 json。有没有办法在 json 返回给客户端之前对其进行编码/清理?不想为每个 api 复制代码。
最佳答案
您可以创建一个实现ResponseBodyAdvice
的@ControllerAdvice
类,该类将在 Controller 执行操作之后、将响应写入调用者之前执行。对于方法 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
关于java - Spring Boot 使用 JSON Sanitizer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52736923/