如何在SpringdocOpenAPI中隐藏特定端点的ExceptionHandlers的响应



有一个Spring Boot应用程序,其中在一个通用@ControllerAdvice和几个@ExceptionHandler中处理异常。例如:

@ControllerAdvice
public class CustomExceptionHandler extends ResponseEntityExceptionHandler {
@ResponseStatus(HttpStatus.FORBIDDEN) // 403
@ExceptionHandler(AccessDeniedCustomException.class)
public ResponseEntity<Object> handleAccessDeniedException(Exception ex, WebRequest request) {
...
}
@ResponseStatus(HttpStatus.NOT_FOUND) // 404
@ExceptionHandler(NotFoundCustomException.class)
public ResponseEntity<Object> handleNotFoundException(Exception ex, WebRequest request) {
...
}
}

通过这个配置,我得到了生成的OpenAPI yaml文件,其中包含每个端点的响应403和404。

我想为一些特定的端点隐藏403,我该怎么做?

我知道处理程序方法的@Hidden注释,但它从每个端点删除了响应代码。这不是一种理想的行为。

可以通过使用@ControllerAdvice注释中的参数来隐藏来自多个端点的一些响应。您可以将处理程序方法按不同ControllerAdvice类中具有相同行为的组进行拆分。

然后,对于一个@ControllerAdvice注释,可以通过basePackagesassignableTypes指定应用条件。看见https://stackoverflow.com/a/36042624/3465146请回答以了解详细信息。

但是,如果您有很多具有常见行为的端点,而只有少数响应较少的异常端点,则此解决方案并不理想。如果有一个简单的解决方案来解决这个特定的问题,那就太好了,但我找不到

最新更新