Skip to content

例外请求放行

有用户反馈引入Graceful Response后,所有的controller方法均被处理了,他们希望能配置一些例外的情况。

1. 单个方法例外排除

针对某个Controller方法,我们可以添加@ExcludeFromGracefulResponse注解,声明该方法不需要进行统一的包装。

java
/**
 * @author lihao3
 * @date 2023/6/30 10:10
 */
@Api("用户相关接口")
@Slf4j
@RestController
@RequestMapping("system/user")
@RequiredArgsConstructor
public class SysUserController {

  private final SysUserService service;

  @ApiOperation("删除")
  @DeleteMapping("{id}")
  @ExcludeFromGracefulResponse
  public String delete(@PathVariable Long id) {
    service.delete(id);
    return "删除成功";
  }

}

这样配置就会直接返回"删除成功",不再进行统一返回值的封装。

2. 包级别的例外处理

用户可以通过配置graceful-response.exclude-packages,声明某些包需要跳过不进行处理。

该配置项支持*和**,例如

yaml
graceful-response:
  exclude-packages:
    - com.lizhiadmin.pro.module.*

该配置表明com.lizhiadmin.pro.module包下的所有controller均不会被Graceful Response进行自动处理。

3. 根据请求路径进行放行

用户可以通过配置graceful-response.exclude-urls,声明某些请求路径需要跳过不进行处理。

例如,对于 /a/b/c,假如要把路径中有/b/的请求进行放行,则可以配置为/**/b/**

4. 根据返回值类型进行放行

用户可以通过配置graceful-response.exclude-return-types,声明某些返回值类型需要跳过不进行处理。

yaml
graceful-response:
  exclude-return-types: com.feiniaojin.gracefuresponse.example.dto.UserInfoView

5. 异常类放行

从5.0.0版本开始,可以通过graceful-response.exclude-exception-types放行某些异常。

yaml
graceful-response:
  exclude-exception-types:
    - com.feiniaojin.gracefuresponse.example.exceptions.ExcludeException

6. 异常包路径放行

从5.0.0版本开始,可以通过graceful-response.exclude-exception-packages放行某些包路径下的异常。

yaml
graceful-response:
  exclude-exception-packages:
    - "*.excludep.*"