Как я могу заставить swagger собирать yaml-файл определения api?

#java #spring-boot #swagger #openapi #springfox

#java #весенняя загрузка #swagger #openapi #springfox

Вопрос:

Я попытался использовать этот подход

     @Primary
    @Bean
    public SwaggerResourcesProvider swaggerResourcesProvider(InMemorySwaggerResourcesProvider defaultResourcesProvider) {
        return () -> {
            SwaggerResource wsResource = new SwaggerResource();
            wsResource.setName("Documentation");
            wsResource.setSwaggerVersion("3.0");
            wsResource.setLocation("/swagger.yaml");

            List<SwaggerResource> resources = new ArrayList<>(defaultResourcesProvider.get());
            resources.add(wsResource);
            return resources;
        };
    } 
  

но, похоже, это не работает, файл не извлекается из каталога ресурсов.
Есть предложения?

Комментарии:

1. И это работает для "/swagger.json" ?

Ответ №1:

Это должно сработать, см., Например: https://songrgg.github.io/operation/host-swagger-documentation-with-yaml-json-files /.

Скорее всего, вы swagger.yaml находитесь в другом каталоге, чем ваша конфигурация SwaggerConfiguration, поэтому проверьте /swagger.yaml , не должно ли быть <relative-path>/swagger.yaml

Ответ №2:

Наконец-то найден ответ. Моя проблема заключалась в том, что у меня была аннотация @EnableWebMvc в одном из классов конфигурации. Аннотация нарушает всю автоматическую настройку spring-boot для статических ресурсов (стандартные пути к классам, в которых все статические ресурсы выбираются автоматически).