提问者:小点点

如何获取响应代码和响应主体,当在Spring启动中调用过滤器并抛出异常时


I am using Swagger to get response of PUT() method. I have created a filter to limit request body size to 10000kb in my Spring boot Application. When I send request os size greater than 10000kb, i get swagger response as below.
Response Body :"no content" 
Response code: 500

我在下面提到了 Spring 启动嵌入式雄猫“应用程序/json”后请求限制为 10KB

我用下面注册过滤器…

@Bean
    public FilterRegistrationBean loginRegistrationBean() {
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
        filterRegistrationBean.setFilter(new ApplicationJsonRequestSizeLimitFilter());
        filterRegistrationBean.setUrlPatterns(Collections.singletonList("/*"));
        return filterRegistrationBean;
}

如何获取状态代码,以及响应体中过滤器抛出的自定义消息。


共1个答案

匿名用户

你应该试试@ControllerAdvice

这里有一个例子。

@ControllerAdvice
public class GlobalExceptionResolver{

@ResponseStatus(HttpStatus.BAD_REQUEST, reason = "Invalid request type")
@ExceptionHandler(value = SomeException.class)
public ResponseEntity<CustomError> handleSomeException(HttpServletRequest request, SomeException e){
    CustomError error = new CustomError();
    error.setMessage("Very large file");
    return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(error);
}
}