java - Spring Boot 使用 JSON Sanitizer?

标签 java json spring spring-boot jackson

我有一组使用 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/

相关文章:

java - 在现有 PHP 服务器上构建 REST Java API

java - 最佳实践 : JSON for data exchange for RESTful web services using apache CXF

java - 使用 SpringData 存储 map

java - 使用 XPath 单击超文本链接

java - 如何使用 Spring boot JpaRepository 保存多个表

java - 前端 Maven 插件不能 "bower install"

java - Spring Data JPA 的 @PersistenceConstructor 注释是否与 Hibernate 结合使用?

java - Spring Security https认证

java - 如何使用未索引字段过滤存储在 "Query"类型中的结果?

c# - 解析 Postman 中的日期对象以转换为 C# DateTime