gpt4 book ai didi

java - 为什么response.getStatus()返回200 OK,即使实际响应不是

转载 作者:行者123 更新时间:2023-12-02 09:42:26 24 4
gpt4 key购买 nike

我正在实现一项功能,它将对我的 API 的所有访问记录在日志文件中。其中,我有响应状态代码以及与每次访问相关的一些信息。我通过 response.getStaus() 检索状态代码,如 AppLogFilter 中所示。

但是,即使实际响应状态为 400 或 405,它也始终记录 200 OK。 enter image description here

我这里可能有什么问题?

过滤器配置

package com.example.kasahararestapi.filter;

import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class FilterConfig {

@Bean
public FilterRegistrationBean<ApiLogFilter> filterRegistrationBean() {
FilterRegistrationBean<ApiLogFilter> registrationBean = new FilterRegistrationBean();
registrationBean.setFilter(new ApiLogFilter());
registrationBean.addUrlPatterns("/api/items/*");
return registrationBean;
}
}

ApiLogFilter

@Component
public class ApiLogFilter extends OncePerRequestFilter {

private final Logger logger = LoggerFactory.getLogger(ApiLogFilter.class);


@Override
public final void doFilterInternal(
HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
long startTime = System.currentTimeMillis();

long processingTime = System.currentTimeMillis() - startTime;


logger.info(
"{} {} {} {}", request.getMethod(),
request.getRequestURI(), response.getStatus(), processingTime);
filterChain.doFilter(request, response);
}

}

最佳答案

改变

logger.info(
"{} {} {} {}", request.getMethod(),
request.getRequestURI(), response.getStatus(), processingTime);
filterChain.doFilter(request, response);

filterChain.doFilter(request, response);
logger.info(
"{} {} {} {}", request.getMethod(),
request.getRequestURI(), response.getStatus(), processingTime);

原因:名称链表明您有一系列过滤器,每个过滤器都会进行一些处理,然后按顺序传递到下一个过滤器,因此每个对象都有一个链成员来指向序列中的下一个过滤器,获取在过滤器执行完自己的处理后调用。 序列中的最后一个可能会将 null 作为链值,或者它自己知道它是序列中的最后一个。顺序。换句话说,您在过滤器执行处理之前记录信息,导致状态为 200

关于java - 为什么response.getStatus()返回200 OK,即使实际响应不是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56967857/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com