Добавление актуатора как сгруппированного OpenApi

Можем ли мы добавить конечные точки Actuator как groupedOpenApi, которые будут обрабатываться отдельно?

пример:

@bean
public GroupedOpenApi actuatorApi() {
return GroupedOpenApi.builder().setGroup("Actuator")
.packagesToScan("org.springframework.boot.actuate")
.pathsToMatch("/actuator/**")
.build();
}

Спасибо

2 ответа

Решение

Сначала вам нужно включить активатор в swagger-ui:

springdoc.show-actuator=true

Вам просто нужно объявить bean-компонент GroupedOpenApi:

@Bean
 public GroupedOpenApi actuatorApi(){
     String[] paths = {"/actuator/**"};
     return GroupedOpenApi.builder()
             .setGroup("groups")
             .pathsToMatch(paths)
             .build();
 } 

Вот шаги, чтобы добавить привод:

https://github.com/springdoc/springdoc-openapi-demos/commit/aa6bcf1f0312c8fc36f94aeb4653718b36c308f6

Решение, предоставленное user1133021 в основном работает, но есть проблема, когда некоторые конечные точки используют параметры в URL, например/actuator/metrics/{requiredMetricName}из-за того, как Spring Boot обрабатывает конечные точки привода (метод с одним обработчиком, без@PathParam) поля не отображаются в Swagger. См. Проблема с параметрами конечной точки привода Spring boot .

Пример того, что отображается в Swagger без решения проблемы: Пример того, что отображается в Swagger после решения проблемы: Как исправить это обсуждается в Добавление Actuator в качестве сгруппированного OpenApi , но некоторые ссылки не работают. Ключевой вопрос в том, что естьActuatorOpenApiCustomiserкласс, который используется для исправленияPathParams для Actuator, и этот класс не вызывается, когда Actuator находится внутри файла .

Полное решение (работа с springdoc:1.6.9)...

Сначала вам нужно включить привод на swagger-ui:

      springdoc.show-actuator=true

ОбъявитьGroupedOpenApibean с помощью кода (вы не можете использоватьspringdoc.group-configs[0] свойства , потому что вам нужно добавитьOpenApiCustomiserв группу):

      @Bean
 public GroupedOpenApi actuatorApi(OpenApiCustomiser actuatorOpenApiCustomiser){
     String[] paths = {"/actuator/**"};
     return GroupedOpenApi.builder()
             .setGroup("Actuator")
             .pathsToMatch(paths)
             .addOpenApiCustomiser(actuatorOpenApiCustomiser)
             .build();
 }

Дополнительный пример из SpringDoc

Другие вопросы по тегам