Добавление актуатора как сгруппированного 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
класс, который используется для исправленияPathParam
s для Actuator, и этот класс не вызывается, когда Actuator находится внутри файла .
Полное решение (работа с springdoc:1.6.9)...
Сначала вам нужно включить привод на swagger-ui:
springdoc.show-actuator=true
ОбъявитьGroupedOpenApi
bean с помощью кода (вы не можете использоватьspringdoc.group-configs[0]
свойства , потому что вам нужно добавитьOpenApiCustomiser
в группу):
@Bean
public GroupedOpenApi actuatorApi(OpenApiCustomiser actuatorOpenApiCustomiser){
String[] paths = {"/actuator/**"};
return GroupedOpenApi.builder()
.setGroup("Actuator")
.pathsToMatch(paths)
.addOpenApiCustomiser(actuatorOpenApiCustomiser)
.build();
}