繁体   English   中英

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

[英]How to hide the response from ExceptionHandlers for specific endpoints in Springdoc OpenAPI

有一个 Spring 引导应用程序,其中异常在一般@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答案。

但是,如果您有很多具有共同行为的端点,而只有少数响应较少的异常端点,则此解决方案并不理想。 如果有针对这种特定情况的简单解决方案,那就太好了,但我找不到。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM