[英]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
注释,您可以通过basePackages
或assignableTypes
指定应用条件。 有关详细信息,请参阅https://stackoverflow.com/a/36042624/3465146答案。
但是,如果您有很多具有共同行为的端点,而只有少数响应较少的异常端点,则此解决方案并不理想。 如果有针对这种特定情况的简单解决方案,那就太好了,但我找不到。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.