Java OpenResty Spring Spring Boot MySQL Redis MongoDB PostgreSQL Linux Android Nginx 面试 小程序 Arthas JVM AQS juc Kubernetes Docker 诊断工具


Spring Boot 返回加密后的 Response

Spring Boot 大约 1091 字

ResponseBodyAdvice

实现ResponseBodyAdvice接口,在supports()方法中返回true会进入beforeBodyWrite(),在beforeBodyWrite()中对Controller中返回的对象Object body进行修改。

下面示例中的Response为自定义类。

@RestControllerAdvice
@Order(Ordered.HIGHEST_PRECEDENCE)
public class ApiResponseBodyAdvice 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) {
        if (body instanceof Response || body instanceof ProblemDetail) {
            return body;
        }
        body = Response.builder().data(body).build();
        return body;
    }
}

Filter

doFilter()FilterChain调用filterChain.doFilter(request, response);之后再进行对HttpServletResponse读取流,进行修改。

Interceptor

postHandle()afterCompletion()方法中读取HttpServletResponse中的流进行修改。

阅读 501 · 发布于 2023-01-28

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb

扫描下方二维码关注公众号和小程序↓↓↓

扫描二维码关注我
昵称:
随便看看 换一批