我正在为我的 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;
}
如您所见,我正在尝试记录响应代码和响应标头,但这些日志带有空值。能帮我吗