我正在开发一个带有 servlet 过滤器的简单 Spring Boot 应用程序,旨在设置响应状态代码:
@Component
public class TestFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) resp;
response.setStatus(201);
chain.doFilter(req, resp);
}
Run Code Online (Sandbox Code Playgroud)
如果控制器返回一个字符串,一切都会按预期进行(状态为 201)。但是如果控制器返回一个 ResponseEntity,那么在调用 doFilter() 后状态代码是 200 而不是 201:
@RestController
public class TestController {
@GetMapping("/string")
public String testString() {
return "OK"; // status code is 201 as set by Filter
}
}
@RestController
public class TestController {
@GetMapping("/entity")
public ResponseEntity<String> testResponseEntity() {
return ResponseEntity.ok("OK"); // status …Run Code Online (Sandbox Code Playgroud)