ResponseBodyAdvice beforeBodyWrite 方法 ServerHttpResponse 具有空状态和标头值

问题描述 投票:0回答:0

我正在为我的 Spring boot REST API 编写一个类,以通过扩展 ResponseBodyAdvice 来记录响应。因为我能够通过覆盖 beforeBodyWrite 方法来记录响应主体。但是在同一个方法中,ServerHttpResponse 参数没有提供 HTTP 响应状态。以下是我的代码片段

@ControllerAdvice
@Slf4j
public class ResponseBodyInterceptor 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) {
    log.info("response code is {}", ((ServletServerHttpResponse) response).getServletResponse().getStatus());
    log.info("response headers are {}", ((ServletServerHttpResponse) response).getServletResponse().getHeaderNames());
    return body;
}

如您所见,我正在尝试记录响应代码和响应标头,但这些日志带有空值。能帮我吗

spring-boot spring-mvc spring-rest
© www.soinside.com 2019 - 2024. All rights reserved.