Автоматическое создание описания на основе аннотаций Swagger в Springdoc

В основном мой вопрос такой же, как этот, но для Springdoc (а не Springfox).

Короче говоря, у меня есть приложение Spring-boot, и я использую аннотацию spring-security @PreAuthorize для защиты некоторых моих API, в настоящее время основанных только на hasAuthority.

Есть ли способ автоматически изменить описание конкретного ресурса на основе аннотации? Я предполагаю, что это как-то связано с переопределением одного из поведений класса Springdoc по умолчанию (может быть OpenAPICustomiser?), Но я не уверен, как это сделать.


person Y. Sobelman    schedule 24.01.2021    source источник


Ответы (1)


Хорошо, я понял это примерно так:

@Configuration
public class SpringdocPreAuthorize {
    @Bean
    public OperationCustomizer operationCustomizer() {
        return (operation, handlerMethod) -> {
            Optional<PreAuthorize> preAuthorizeAnnotation = Optional.ofNullable(handlerMethod.getMethodAnnotation(PreAuthorize.class));
            StringBuilder sb = new StringBuilder();
            if (preAuthorizeAnnotation.isPresent()) {
                sb.append("This api requires **")
                        .append((preAuthorizeAnnotation.get()).value().replaceAll("hasAuthority|\\(|\\)|\\'", ""))
                        .append("** permission.");
            } else {
                sb.append("This api is **public**");
            }
            sb.append("<br /><br />");
            sb.append(operation.getDescription());
            operation.setDescription(sb.toString());
            return operation;
        };
    }
}
person Y. Sobelman    schedule 25.01.2021
comment
Спасибо за обновление! - person Debargha Roy; 25.01.2021